2015-04-03 6 views
0

Из базы данных MySQL я пытаюсь выбрать столбец с двумя вхождениями \. Текст \ окружает текст. Это происходит в одном термине списка терминов, которые я пытаюсь найти с помощью IN().MySQL select string with in it - string является частью IN()

Вот запрос, который я пытаюсь написать:

SELECT 
q.pk_id, 
q.test_temp, 
q.financ_course, 
q.etc_id 
FROM quckdbase q 
WHERE q.display IN ('Martin','Google test document.',"\'Margaret course economics\'."); 

Как вы можете видеть, последний член в предложении WHERE является причиной проблемы. Для этого термина, точная запись в базе данных

\'Margaret course economics\'. 

Существует период, ., в конце записи.

Что делает этот запрос: Он выбирает значения в колонках 4, если столбец display содержит запись, которая соответствует любому из Martin, Google test document., \'Margaret course economics\.'.

Есть ли способ включить третий поисковый запрос в IN(), чтобы его можно было искать параллельно с другими 2 терминами?

ответ

1

В буквальном строковом значении избегайте обратную косую черту с другим символом обратной косой черты. Кроме того, одиночная кавычка может быть экранирована, предшествуя ей другой отдельной цитатой.

Чтобы «матч» строка, вы можете сделать это:

WHERE q.display IN ('\\''Margaret course economics\\''.') 

Первый обратный слэш «спасения», то второй обратный слэш интерпретируется как буквенный символ обратной косой черты. Две одинарные кавычки в строковом литерале интерпретируются как буквальная одинарная кавычка.

Для тестирования, чтобы подтвердить значение, возвращаемое этим буквальным:

SELECT '\\''Margaret course economics\\''.' AS val 
+0

Спасибо большое. Я знал о побеге за обратную косую черту, но я не знал о том же в одиночной цитате. Ваш ответ сработал. –