Sql 使用LIKE获取只有特定字符的记录

Sql 使用LIKE获取只有特定字符的记录,sql,sql-server,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 谢谢。您可以向L

我的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

谢谢。

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

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

您可以使用通配符
\
字符。
\
是1个字符的通配符。总的来说,这意味着您接受带有
~
且后面至少有一个字符的字符串:

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

在SQL Server中,您可以使用:

SELECT TOP (1000) [PNO]
FROM [MYTABLE] 
WHERE PNO like  '%~%[^~]'
在其他数据库中,可能会使用正则表达式,例如“`~.[^~]$”

最后,您可以使用
like
not like

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

您使用的是什么sql数据库?