SQL选择列以\开头的位置\

1 sql pattern-matching

我正在尝试查找ColumnX数据以a开头的所有数据\.
like '\%'我在寻找什么呢?但\必须在一开始.

Erw*_*ter 7

您的语法在标准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)

另外,请注意,\在许多客户端程序和编程语言中具有特殊含义.如果字符串在它们到达数据库引擎之前被解释,则可能必须在\另一时间加倍.例如,请参阅此相关问题.


Kor*_*urk 5

事实上 '\%' 就是你所需要的。以下语句获取columnX 以'\' 开头的所有数据。

select * from table_name where columnX like '\%' 
Run Code Online (Sandbox Code Playgroud)