PostgreSQL - 如何检查我的数据是否包含反斜杠

问题描述 投票:2回答:4

SELECT count(*)FROM表WHERE列ilike'%/%';

给我包含“/”的值的数量

如何为“\”做同样的事情?

postgresql backslash
4个回答
8
投票
SELECT  count(*)
FROM    table
WHERE   column ILIKE '%\\\\%';

4
投票

摘自docs

请注意,反斜杠在字符串文字中已具有特殊含义,因此要编写包含反斜杠的模式常量,必须在SQL语句中编写两个反斜杠(假设使用了转义字符串语法,请参见第4.1.2.1节)。因此,编写实际匹配文字反斜杠的模式意味着在语句中写入四个反斜杠。您可以通过使用ESCAPE选择不同的转义字符来避免这种情况;那么反斜杠对于LIKE来说并不特别。 (但它对于字符串文字解析器仍然是特殊的,所以你仍然需要它们中的两个。)


3
投票

更好 - 不要使用,只需使用标准位置:

select count(*) from from table where 0 < position( E'\\' in column );

0
投票

你需要E'\\\\',因为LIKE的参数是一个正则表达式,正则表达式转义字符已经是\(例如~ E'\\w'将匹配包含可打印字符的任何字符串)。

doc

© www.soinside.com 2019 - 2024. All rights reserved.