У меня есть база данных MySQL, в которой есть поле TagName со значением ~! @ # $% ^ & * () _ + |} {":?> <./ '; [] \ = -` Я пытаюсь выполнить запросвыберите TagName из taginfo, где TagName, например, '% @ # $%'; </p>
Это показывает, что данные с тэгом содержат символ кавычки. Но я запрашиваю оператор = и оператор like и добавляю больше кавычек '', чтобы принять одинарную кавычку, ноон показывает пустой результат.
Я также пытаюсь добавить COLLATE UTF8_GENERAL_CI или изменить CHARACTER SET, но все они не удаются.
SELECT * from taginfo where tagname like '%~!@#$%^&*()_+|}{":?><./'';[]\=-`%';
SELECT * from taginfo where tagname like '%~!@#$%^&*()_+|}{":?><./'';[]\=-`%' COLLATE UTF8_GENERAL_CI;
SELECT * from taginfo where tagname COLLATE UTF8_GENERAL_CI like '%~!@#$%^&*()_+|}{":?><./'';[]\=-`%';
ALTER TABLE mytable CONVERT TO CHARACTER SET UTF8_GENERAL_CI
Error 2/19/2019 10:03:24 AM 0:00:00.039 <link> - MySQL Database Error: Unknown character set: 'UTF8_GENERAL_CI' 5 0
Версия сервера БД: MySQL 5.5.5 MariaDB Информация о таблице:
Вот результат запроса без одинарных кавычек:
Обновлено: я обнаружил проблему, что если я запрашиваю без символа \это показывает результат:
select TagName from taginfo where TagName like '%~!@#$%^&*()_+|}{":?><./'';[]%';
Но я добавил символ \, в конце он ничего не показывает:
select TagName from taginfo where TagName like '%~!@#$%^&*()_+|}{":?><./'';[]\%';
добавить еще всплеск все еще не работает
select TagName from taginfo where TagName like '%~!@#$%^&*()_+|}{":?><./'';[]\\%';
Обновлено: проблема в том, что аналогичный запрос возвращает результат, но запрос = не возвращает.
SELECT * from taginfo where tagname like '%~!@#$%^&*()_+|}{":?><./'';[]\\=-`%';
select * from taginfo where TagName = '~!@#$%^&*()_+|}{":?><./'';[]\\=-`'
Обновлено: при попытке создатьd БД в MySQL 8.0.13, этот запрос работает нормально и возвращает 1 строку
select * from taginfo1 where TagName = '~!@#$%^&*()_+|}{":?><./'';[]\\=-`';
Но в 10.3.9-MariaDB запрос
select * from taginfo1 where TagName = '~!@#$%^&*()_+|}{":?><./'';[]\\=-`';
не может вернуть никакого результата.
SELECT VERSION();
10.3.9-MariaDB