应用错误收集 您所在的位置:网站首页 5spaces 应用错误收集

应用错误收集

#应用错误收集| 来源: 网络整理| 查看: 265

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 实验室设备网 版权所有