您的语法在标准SQL中有效,因为\
它不是字符串中的元字符.但它在很大程度上取决于您实际使用的DBMS和版本 - 以及您当前的设置.
在PostgreSQL的在使用的字符串POSIX风格的转义进行解释,所以你将不得不增加一倍\
,以\\
获得一个普通的反斜杠.
SQL标准另有说法.所以PostgreSQL人员已经准备好多年来切换到标准行为,引入了特殊的转义字符串语法E''
和配置设置escape_string_warning
,让人们意识到模糊的语法.
在9.1版本中,他们最终切换到"符合标准"的字符串.现在,如果全局用户配置使用standard_conforming_strings = on
,您可以简单地写:
... col like '\%'
Run Code Online (Sandbox Code Playgroud)
否则你必须写:
... col like E'\\%'
Run Code Online (Sandbox Code Playgroud)
另外,请注意,\
在许多客户端程序和编程语言中具有特殊含义.如果字符串在它们到达数据库引擎之前被解释,则可能必须在\
另一时间加倍.例如,请参阅此相关问题.
事实上 '\%' 就是你所需要的。以下语句获取columnX 以'\' 开头的所有数据。
select * from table_name where columnX like '\%'
Run Code Online (Sandbox Code Playgroud)