SQL LIKE运算符只在使用%时工作

时间:2016-12-18 22:41:08

标签: sql sql-server

当我在SQL中编写此查询时:

select * from words where  v like 'win'

SQL返回null。但是当我尝试这个时:

select * from words where  v like '%win'

或者这个

select * from words where  v like '%win%'

它起作用并返回包括win在内的所有单词。我在我的单元格中“获胜”为什么第一次查询它返回空值!? 我使用rtrim(v)来省略空间,但它没有用。

3 个答案:

答案 0 :(得分:2)

这将显示任何带有控制字符的记录

Select *
 From  Words
 Where CharIndex(CHAR(0),[v])+CharIndex(CHAR(1),[v])+CharIndex(CHAR(2),[v])+CharIndex(CHAR(3),[v])
      +CharIndex(CHAR(4),[v])+CharIndex(CHAR(5),[v])+CharIndex(CHAR(6),[v])+CharIndex(CHAR(7),[v])
      +CharIndex(CHAR(8),[v])+CharIndex(CHAR(9),[v])+CharIndex(CHAR(10),[v])+CharIndex(CHAR(11),[v])
      +CharIndex(CHAR(12),[v])+CharIndex(CHAR(13),[v])+CharIndex(CHAR(14),[v])+CharIndex(CHAR(15),[v])
      +CharIndex(CHAR(16),[v])+CharIndex(CHAR(17),[v])+CharIndex(CHAR(18),[v])+CharIndex(CHAR(19),[v])
      +CharIndex(CHAR(20),[v])+CharIndex(CHAR(21),[v])+CharIndex(CHAR(22),[v])+CharIndex(CHAR(23),[v])
      +CharIndex(CHAR(24),[v])+CharIndex(CHAR(25),[v])+CharIndex(CHAR(26),[v])+CharIndex(CHAR(27),[v])
      +CharIndex(CHAR(28),[v])+CharIndex(CHAR(29),[v])+CharIndex(CHAR(30),[v])+CharIndex(CHAR(31),[v])
      +CharIndex(CHAR(127),[v]) >0

因为你只有/ n和/ t

Update Words set V = replace(replace(replace(v,char(10),''),char(13),''),char(9),'')

答案 1 :(得分:0)

您的文字中很可能有白色字符 在具有“win”值的行上执行以下代码以进行验证。

select cast(v as varbinary(max)) from words where ...

答案 2 :(得分:0)

如果你仍然得到空单元格,那么这可能是SSMS“结果到网格”的问题,更改为“结果到文本”(CTRL-T)它可能会更多地说明源数据的真实性质