Как применить SQL, как на "\ detail1 \ detail2 \" (Escapeing '\')? - PullRequest
2 голосов
/ 19 августа 2011

У меня есть таблица T1 со столбцом details, столбец данных содержит следующие данные примера:

select details from T1;

\this is detail 1\this is detail2\
\this is detail 1\this is detail2\
:this is detail 1:this is detail2:
:this is detail 1:this is detail2:
\this is detail 1\this is detail2\

Я хочу получить только те details, которые разделены \.

Для этого я написал следующий запрос:

select details from T1 where details like '\%\%\';

Но он не отвечает должным образом, так как он принимает \ как корректор спасения.

Таким образом, отображается ошибка неполного одинарного инвертирования (')!

Итак, как это сделать?

Ответы [ 3 ]

6 голосов
/ 19 августа 2011

Попробуйте, вам нужно дважды избегать обратной косой черты в операторе LIKE.

select details from T1 where details like '\\\\%\\\\%\\\\'

http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html

Поскольку MySQL использует синтаксис C в строках (например, «\ n »для представления символа новой строки), вы должны удвоить любую« \ », которую вы используете в строках LIKE.Например, для поиска «\n» укажите его как «\\n».Для поиска «\» укажите его как «\\\\»;это связано с тем, что обратный слеш удаляется парсером один раз и снова, когда выполняется сопоставление с образцом, оставляя один обратный слеш для сопоставления.

1 голос
/ 19 августа 2011

MySql имеет escape-символ \\ для обратной косой черты (так же, как в C-подобных языках):

http://dev.mysql.com/doc/refman/5.0/en/string-syntax.html

0 голосов
/ 19 августа 2011

Попробуйте использовать '\\% \\% \\' - используя обратную косую черту, чтобы избежать обратной косой черты.

...