来自广泛的SQL Server T-SQL背景,我无法找到任何描述SQL CE和完整的SQL Server之间的T-SQL支持差异的特定文档.你遇到了哪些不同之处?在某处有并排的T-SQL比较吗?我在这里看过MSDN文档,但我似乎无法找到有关哪些T-SQL语句在两者之间不可移植的任何细节.我发现的一个不同之处是缺少ISNUMERIC()函数.还有其他人?
注意:我对DML功能的差异比DDL和管理功能更感兴趣,我确信这些功能很多并且完全无趣.
假设我有一个数据库,其中包含具有以下数据元素的人员:
我从各种格式中获取了大量数据,其中包含您能想到的这些信息的各种合理变化。一些例子是:
当这些数据进来时,我需要写一些东西来匹配它。我不需要或期望获得超过 80% 的匹配率。自动匹配后,我会将不确定的匹配显示在网页上,供某人手动匹配。
其中一些复杂性是:
我已经看到SSIS有模糊匹配,但我们目前不使用SSIS,而且我发现它非常笨拙并且几乎不可能进行版本控制,所以它不是我的首选工具。但如果这是最好的,请告诉我。否则,是否有任何(最好是免费的,最好是基于 .NET 或T-SQL 的)工具/库/实用程序/技术用于解决此类问题?
我有一个用 aDecimal
作为数字表示度量单位的类。只是为了简化这个例子,假设我代表厘米。我想为这个类实现一个 ToString() 方法。问题是,如果数值是整数,我只想将小数显示为整数。否则,我想将其保留为小数。因此,例如,10.5D 厘米将显示为“10.5cm”,但 7.0D 厘米应显示为“7cm”。我希望阅读起来既快速又简单。我有一个可行的解决方案,但似乎应该有更好的方法。
这是一个人为的例子,展示了我对它的第一次破解:
Public Property Units As String = "cm"
Public Property NumericValue As Decimal = 10.5D
Public Overrides Function ToString()
Dim num As String = If(Me.NumericValue = Decimal.Ceiling(Me.NumericValue), _
Decimal.ToInt32(Me.NumericValue).ToString(), _
Me.NumericValue.ToString())
Return num + Me.Units
End Function
Run Code Online (Sandbox Code Playgroud)
我有点不舒服Me.NumericValue = Decimal.Ceiling(Me.NumericValue)
。关于如何更好地做到这一点的任何想法?有什么我可以用 String.Format 或 Decimal 类上的其他一些方法做的事情,可以使这更清晰并保持其性能?
我已经使用Linq-to-SQL很长一段时间了,效果很好.但是,最近我一直在尝试使用它来提取大量数据并且遇到了一些问题.(当然,我理解L2S可能不是这种特殊处理的正确工具,但这就是为什么我在试验 - 找到它的极限.)
这是一个代码示例:
var buf = new StringBuilder();
var dc = new DataContext(AppSettings.ConnectionString);
var records = from a in dc.GetTable<MyReallyBigTable>() where a.State == "OH" select a;
var i = 0;
foreach (var record in records) {
buf.AppendLine(record.ID.ToString());
i += 1;
if (i > 3) {
break; // Takes forever...
}
}
Run Code Online (Sandbox Code Playgroud)
一旦我开始迭代数据,查询就会按预期执行.当单步执行代码时,我立即进入循环,这正是我所希望的 - 这意味着L2S似乎在幕后使用DataReader而不是首先拉取所有数据.但是,一旦我到达break
,查询将继续运行并拉出所有其余记录.以下是我对SO社区的问题:
1.)有没有办法阻止Linq-to-SQL在中间执行一个非常大的查询DataReader
?
2.)如果执行大型Linq-to-SQL查询,是否有办法阻止DataContext填充返回的每个对象的更改跟踪信息.基本上,我可以使用DataReader
技术以短的对象生命周期进行大型查询,而不是填满内存吗?
如果这不是内置于DataContext
自身的功能并且需要通过一些自定义扩展功能,我没关系.我只是想利用Linq的简单性和强大功能来处理夜间处理任务的大型查询,而不是依赖于T-SQL.
我有一个包含以下rm
语句的 fish 函数:
rm ~/path/to/dir/*.log
Run Code Online (Sandbox Code Playgroud)
如果该路径中有 *.log 文件,则此语句可以正常工作,但在没有 *.log 文件时会失败。错误是:
~/.config/fish/functions/myfunc.fish (line 5): No matches for wildcard '~/path/to/dir/*.log'. See `help expand`.
rm ~/path/to/dir/*.log
^
in function 'myfunc'
called on standard input
Run Code Online (Sandbox Code Playgroud)
ZSH 有所谓的Glob Qualifiers。其中之一N
,处理为当前模式设置 NULL_GLOB 选项,这基本上满足我的要求:
如果文件名生成的模式没有匹配项,则从参数列表中删除该模式而不是报告错误。
我知道 fish 没有ZSH-style glob qualifiers,但我不清楚如何在我的 fish 函数中处理这种情况。我应该遍历数组吗?看起来真的很冗长。或者有没有更可疑的方法来处理这种情况?
# A one-liner in ZSH becomes this in fish?
set -l arr ~/path/to/dir/*.log
for f in $arr
rm $f
end
Run Code Online (Sandbox Code Playgroud) 我想验证传入的json对象在服务器端的正确性.有没有标准/最佳方式来做到这一点?你的验证方法是什么?
使用SQL Server 2008,我想创建一个UDF,它给我一个对象的创建日期.这是代码:
create function dbo.GetObjCreateDate(@objName sysname) returns datetime as
begin
declare @result datetime
select @result = create_date from sys.objects where name = @objname
return @result
end
go
Run Code Online (Sandbox Code Playgroud)
我想将这个UDF放在master数据库或其他一些共享数据库中,以便可以从任何地方访问它,除非我这样做,然后sys.objects
引用从master
数据库而不是我正在启动我的查询的数据库.我知道你可以这样做,因为information_schema
视图位于master
并且只是包含对sys.objects的本地实例的调用,所以我希望有一个简单的方法来使用我的UDF.
我将所有T-SQL DDL语句存储在版本控制下的Visual Studio数据库项目中.这些脚本总是在没有错误的情况下运行,因此它们包含一个drop/create语法,如下所示:
use MyDatabase
go
if objectproperty(object_id('dbo.MyProcName'), 'IsProcedure') = 1 begin
drop procedure dbo.MyProcName as
end
go
-----------------------------------------------------------------------
-- $Id: $
-- Notes: blah blah
-----------------------------------------------------------------------
create procedure dbo.MyProcName as
--...
go
Run Code Online (Sandbox Code Playgroud)
麻烦的是,我们已经转移到复制方案,所以我不能再使用我的drop/create语法了,因为你不能删除标记为复制的对象.现在我需要创建proc,如果它不存在,或者如果它存在则改变它.我无法改变我的IF
逻辑,因为我无法在IF
声明中创建一个proc - 我只能放弃它.有任何想法吗?
编辑:感谢Adam的回答,这就是我最后使用的内容.不知道为什么我不考虑执行SQL字符串...必须喝更多的咖啡.
use MyDatabase
go
if objectproperty(object_id('dbo.MyProcName'), 'IsProcedure') is null begin
exec('create proc dbo.MyProcName as')
end
go
-----------------------------------------------------------------------
-- $Id: $
-- Notes: blah blah
-----------------------------------------------------------------------
alter procedure dbo.MyProcName as
--...
go
Run Code Online (Sandbox Code Playgroud) sql-server ×3
t-sql ×3
.net ×2
c# ×2
algorithm ×1
decimal ×1
fish ×1
java ×1
json ×1
linq-to-sql ×1
validation ×1
vb.net ×1