【问题标题】:Select Query is not working with WHERE clause when there is a space in column value当列值中有空格时,选择查询不适用于 WHERE 子句
【发布时间】:2020-10-10 18:02:14
【问题描述】:

当列值中有空格时,选择查询不能与 WHERE 子句一起使用。因为我的表列值中有空间。当我从查询结果中复制相同的值并将其放在 where 子句中时,它不会返回任何结果。 .

select * from myTable

如果我在查询下方运行

select * From myTable where OldLoanNumber ='000000010383904 '

,它不返回任何结果

SQL Server 版本为 18.6,如图所示

我是否遗漏了与 SQL 查询分析器相关的任何内容或设置?

【问题讨论】:

  • 为什么尾随空格属于列值的末尾?你试过没有空格吗?
  • 了解surprising behavior trailing spaces,或者(如果您不喜欢访问“未知”网站,请尝试以下:support.microsoft.com/en-us/help/316626/…
  • 您确定这是空格而不是制表符吗?应忽略尾随空格。
  • @SteveC,在 db 中数据存储为 ,我现在无法更改。
  • @jmoreno,哦,天哪,你是对的,这不是实际上是选项卡的空间,我通过将空间更改为选项卡得到了结果。非常感谢! :-)

标签: sql sql-server


【解决方案1】:

ANSI 标准规定字符串比较将被填充到相同的长度,我已经多次观察到这种行为。

我认为最可能导致您出现问题的原因是最后一个字符是制表符或其他非空格字符,在您看来只是 看起来 像一个空格。

【讨论】:

    【解决方案2】:

    例如使用 Ltrim、RTrim 或 Trim 之类的

    select * From myTable where Trim(OldLoanNumber) =Trim('000000010383904 ')

    【讨论】:

    • 我试过了,已经选择 * From myTablewhere RTrim(OldLoanNumber) = RTrim('000000010383904 ') 并选择 * From myTablewhere Trim(OldLoanNumber) = Trim('000000010383904 '),它不工作给我没有结果
    • 也许那个空格字符不是真正的空格而是其他字符,请检查
    猜你喜欢
    • 2011-04-26
    • 2014-08-14
    • 1970-01-01
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2010-10-03
    相关资源
    最近更新 更多