使用LIKE获取仅具有特定字符的记录

时间:2019-06-07 14:21:42

标签: sql sql-server

我的SQL表中的一列有“〜”作为字符串的一部分 我想选择所有在两边都有〜且不以

结尾的记录

我尝试使用LIKE语句,例如

SELECT TOP (1000) 
     [PNO]
   FROM [MYTABLE] where PNO like  '%~%'

代码正确地返回所有带有〜

的记录

结果是:

C799~
C799~001~6907
E066~
E066~001~8558

但是我想修改查询,使其只返回

C799~001~6907
E066~001~8558

谢谢。

3 个答案:

答案 0 :(得分:5)

您可以使用通配符__是1个字符的通配符。总体而言,这意味着您接受带有~并且后面至少包含1个字符的字符串:

SELECT TOP (1000) [PNO]
FROM [MYTABLE] where PNO like  '%~_%'

答案 1 :(得分:0)

您可以在LIKE表达式中添加第二个条件,以排除以波浪号结尾的记录:

SELECT TOP (1000) [PNO]
FROM [MYTABLE]
WHERE PNO LIKE '%~%' AND PNO NOT LIKE '%~';

答案 2 :(得分:0)

在SQL Server中,您可以使用:

SELECT TOP (1000) [PNO]
FROM [MYTABLE] 
WHERE PNO like  '%~%[^~]'

在其他数据库中,您可能会使用正则表达式,例如''〜。* [^〜] $'。

作为最后的手段,您可以使用likenot like进行此操作:

WHERE PNO LIKE '%~%' AND PNO NOT LIKE '%~';