![]() |
1
65
这是预期的结果:在SQL Server中,
|
![]() |
2
6
尾随空格并不总是被忽略。 我今天经历了这个问题。我的表有NChar列,正在与varchar数据联接。 因为表中的数据不如其字段宽,所以SQL Server会自动添加尾随空格。 我有一个采用varchar参数的itvf(内联表值函数)。 这些参数用于与带有nchar字段的表的联接中。 联接失败,因为传递给函数的数据没有尾随空格,但表中的数据有尾随空格。为什么会这样? 我被数据类型优先权绊倒了。(见 http://technet.microsoft.com/en-us/library/ms190309.aspx ) 比较不同类型的字符串时,在比较之前,低优先级类型将转换为高优先级类型。所以我的varchar参数被转换成nchars。对NChars进行了比较,显然这些空间非常重要。 我是怎么修好的?我更改了函数定义以使用nvarchar参数,这些参数的优先级高于nchar。现在,NChars被SQL Server自动更改为nvarchars,尾部空格被忽略。 为什么我不做一个RTRIM?测试显示,RTRIM破坏了性能,从而阻止了SQL Server否则将使用的连接优化。 为什么不更改表的数据类型?这些表已经安装在客户站点上,他们不想运行维护脚本(时间+支付DBA的费用)或让我们访问他们的机器(可以理解)。 |
![]() |
3
3
是的,马克是对的。运行以下SQL:
但是,在上面的示例中,关于“like”语句的断言似乎不起作用。输出:
编辑: 为了让它发挥作用,你可以把它放在最后:
虽然丑陋。 编辑2: 鉴于上述评论,以下内容将起作用:
|
![]() |
4
-3
尝试
|
![]() |
John D · 需要为NULL或NOT NULL的WHERE子句 6 月前 |
![]() |
Marc Guillot · 记录值时忽略冲突 7 月前 |
![]() |
Fachry Dzaky · 正确使用ROW_NUMBER 7 月前 |
![]() |
TriumphTruth · 从满足特定条件的数据集中选择1行 7 月前 |