Специальные символы SQL, выходящие из ввода - PullRequest
2 голосов
/ 10 апреля 2019

В моей базе данных есть несколько путей к файлам, в какой-то момент мне нужно обновить часть пути.Как бороться со спецсимволами для экс.от \ruba до \rubla при обновлении данных.

\r - это специальный символ

\rubla приходит от входного параметра C # к запросу SQL

SQL:

update table
set Location = CONCAT('gabiluca.at.gmail.com\folder', 
                       substring(Location, length('gabiluca.at.gmail.com\director') + 1))
where Location like 'gabiluca.at.gmail.com\\\\folder%'

\\\\ переводится в \

Простой случай:

В таблице mysql у вас есть относительный путь Windows, сохраненный в столбце с именем Location.

Id  Name    Location
38  MuseScore 3.lnk gabiluca.at.gmail.com
39  redenumit   gabiluca.at.gmail.com
40  interior    gabiluca.at.gmail.com\redenumit
41  FileZilla Client.lnk    gabiluca.at.gmail.com\redenumit
42  MuseScore 3.lnk gabiluca.at.gmail.com\redenumit\interior

Теперь попробуйте обновить: 'redenumit' в mysql с оператором обновления для всех записей.Доза это работает?Сохраните префикс.Подумайте об этом, например, когда вы переименуете папку «redenumit» в «измененную», например.

Я даже не могу сделать запрос подобным образом (это проблема):

select * 
from MediaResource
where Location like 'gabiluca.at.gmail.com\redenumit%'

1 Ответ

1 голос
/ 10 апреля 2019

Можете ли вы попробовать эту команду:

SET sql_mode = NO_BACKSLASH_ESCAPES;

и сброс:

SET sql_mode = '';

всякий раз, когда выполняется обработкасделано?

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