应用错误收集 | 您所在的位置:网站首页 › 5spaces › 应用错误收集 |
SQL - 为什么要修剪参数
时间:2009-09-04 03:32:23
标签: sql trim 我有一个表(t),其中列(c)定义为varchar 20,包含值'a','b'和'c' 如果我执行以下sql,则返回一个值: select * from table where c = 'a '为什么? 我认为它以某种方式投射/修剪参数,但为什么呢? 我如何真正搜索'a ' 3 个答案:答案 0 :(得分:1) 要将其与varchar列进行比较,您的字符串文字也必须是varchar类型。 Varchar会修剪额外的结束空白区域。它变化,因此是VARchar。普通的char类型不修剪空格,如果需要,实际上会在文字的末尾添加额外的空格。您可以检查这一点(并使用LEN()函数修复您的搜索: declare @a varchar(20) = 'a ' select * from t where c = @a and len(@a) = Len(c)答案 1 :(得分:1) 指定尾随空格在ANSI SQL标准中以特殊方式处理: http://support.microsoft.com/default.aspx/kb/316626 http://support.microsoft.com/kb/154886/EN-US/ 对char和varchar来说,这种行为实际上是相同的。 答案 2 :(得分:0) 我使用了简单的解决方案: declare @a varchar(20) = 'a ' select * from t where c + '$' = @a + '$' |
CopyRight 2018-2019 实验室设备网 版权所有 |