检查字符串是否包含其他字符串

Dof*_*ofs 59 t-sql sql-server string

在T-SQL中,如何检查字符串是否包含另一个字符串?

我有一个nvarchar可能是"橘子苹果".

我想做一个更新,例如,columm 包含"Apples".

如何才能做到这一点?

Dan*_*ite 87

WHERE NOT (someColumn LIKE '%Apples%')
Run Code Online (Sandbox Code Playgroud)

  • -1:对于静态字符串'Apples'可以,但不适用于可能包含通配符的动态字符串,例如'%','_'.例如,如果搜索包含"减少5%"的列,则LIKE运算符也将匹配包含"减少50%"和"减少5美分"的列.@marc_s使用CHARINDEX的解决方案将在这些情况下按预期工作,恕我直言应该是接受的答案. (3认同)
  • 为什么我没有想到这一点,我想要更高级的东西:) (2认同)

mar*_*c_s 25

或者,您可以使用此:

WHERE CHARINDEX(N'Apples', someColumn) = 0
Run Code Online (Sandbox Code Playgroud)

不确定哪一个表现更好 - 你要测试它!:-)

更新:性能似乎与其他解决方案非常相似(WHERE someColumn不喜欢'%Apples%') - 所以这只是个人偏好的问题.

  • +1:如果要匹配的文本是动态的而不是静态字符串,例如'Apples',那么这种方法是优越的,因为你不需要担心会出现'%','_'之类的通配符由LIKE运算符匹配. (2认同)

小智 10

将此作为WHERE条件使用

WHERE CHARINDEX('Apples', column) = 0 
Run Code Online (Sandbox Code Playgroud)


Gre*_*rty 7

你得到的答案假定静态文本进行比较.如果要与另一列进行比较(例如,您要连接两个表,并且想要找到一个表中的列是另一个表中列的一部分的那些表),则可以执行此操作

WHERE NOT (someColumn LIKE '%' || someOtherColumn || '%')
Run Code Online (Sandbox Code Playgroud)

  • 如果someOtherColumn包含通配符,例如'%','_',则无效. (2认同)