如何匹配where子句中可能包含连字符的字符串?

时间:2016-12-08 01:03:48

标签: sql-server

假设我有一个电话号码表。在此表中,'数字' column(nvarchar)可能包含也可能不包含连字符。如何构造where子句?

例如,记录可能如下所示:

  

号码|名称

     

111 |彼得

     

11-22 |标记

     

222-33 |约翰

如果我这样做

SELECT Name FROM table WHERE Number = '22233'

我找不到约翰。而且我不知道连字符可能出现在哪个数字之后。

构建WHERE子句以按编号匹配记录的最佳方法是什么?

3 个答案:

答案 0 :(得分:1)

[1;5C

答案 1 :(得分:0)

使用STUFF的另一种方法,如果它总是单-,那么使用此

SELECT Name FROM table 
WHERE Stuff(Number,Charindex('-',Number),1,'') = '22233'

约翰的Replace方法看起来更优雅

答案 2 :(得分:-1)

除了上述答案,您可以在where子句中使用like%

SELECT Name FROM table WHERE Number like '%-%'

这将为您提供所有含有hyphon的物品。