PostgreSQL - как проверить, есть ли в моих данных обратная косая черта - PullRequest
2 голосов
/ 01 апреля 2009

Счетчик SELECT (*) ИЗ таблицы ГДЕ столбец ilike "% /%";

дает мне количество значений, содержащих "/"

Как сделать то же самое для "\"?

Ответы [ 4 ]

8 голосов
/ 01 апреля 2009
SELECT  count(*)
FROM    table
WHERE   column ILIKE '%\\\\%';
4 голосов
/ 01 апреля 2009

Выдержка из документов :

Обратите внимание, что обратная косая черта уже имеет специальное значение в строковых литералах, поэтому для записи константы шаблона, содержащей обратную косую черту, необходимо написать две обратные косые черты в операторе SQL (при условии использования синтаксиса escape-строки см. Раздел 4.1.2.1). Таким образом, написание шаблона, который на самом деле соответствует буквальному обратному слешу, означает запись четырех обратных наклонных черт в утверждении. Вы можете избежать этого, выбрав другой escape-символ с ESCAPE; тогда обратный слеш больше не является особенным для LIKE. (Но он по-прежнему особенный для синтаксического анализатора строковых литералов, поэтому вам все еще нужны два из них.)

3 голосов
/ 01 апреля 2009

еще лучше - не используйте как, просто используйте стандартную позицию:

select count(*) from from table where 0 < position( E'\\' in column );
0 голосов
/ 01 апреля 2009

Вам необходимо E'\\\\', поскольку аргумент LIKE является регулярным выражением, а escape-символ регулярного выражения уже равен \ (например, ~ E'\\w' будет соответствовать любой строке, содержащей печатный символ).

См. документ

...