Предложение SQL IN: как экранировать специальные символы при передаче списка - PullRequest
0 голосов
/ 02 февраля 2019

Я передаю список журналов в запросе, который содержит специальные символы, такие как &, - '() в названиях журналов.Вот как выглядит мой запрос:

select alt_id, citation.doi, citation.journal, citation.volume, 
citation.issue,  citation.pubdate, citation.title
from ALT_2018
where citation.journal in ('Mechanics & Astronomy', 'Women's Health', 'Current 
Directions in Psychological Science (Sage Publications Inc.)', 'Cement & 
Concrete Composites', 'Journal of Heart & Lung Transplantation', 'Infection control 
and hospital epidemiology (Online)', 'Journal of Research on Adolescence 
(Blackwell Publishing Limited)', 'Ophthalmic & Physiological Optics', 'Brain 
Structure & Function', 'New Solutions: A Journal of Environmental & 
Occupational Health Policy', 'European Physical Journal B -- Condensed 
Matter')

Я пытался использовать обратную косую черту для экранирования специальных символов, но он не работал, и я также не могу сделать это вручную, поскольку список состоит из 2000+ журналов.Пожалуйста, помогите мне.

PS Я использую расширение SQL-запросов в Studio3T, так как данные сохраняются в MongoDB и находятся в формате json

1 Ответ

0 голосов
/ 03 февраля 2019

Вы можете прочитать о специальных символах в строковых литералах MySQL здесь: https://dev.mysql.com/doc/refman/8.0/en/string-literals.html

Если вам нужно использовать символы апострофа, вы можете сделать это одним из следующих способов:

'Women\'s Health'
'Women''s Health'
"Women's Health" -- only if sql_mode is not ANSI or ANSI_QUOTES

Это варианты.Я не знаю, что вы подразумеваете под «это не сработало», поэтому я не могу посоветовать, как это исправить.Я не использую Studio3T, поэтому не могу догадаться, что мешает вам использовать одно из этих решений.

Нет ничего особенного в символе & в строковых литералах MySQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...