Мне нужно искать строки, содержащие символ 'в mysql. Я пытаюсь:
select * from transactions where transactions.calculatorCode like "%'%";
но он возвращает ВСЕ записи. Я что-то пропустил?
Вы должны сначала проверить, включен ли режим ANSI_QUOTES на вашем сервере
mysql> SELECT @@sql_mode;
Если вы видите это в результатах, то вы должны окружать ваши струнные литеры только одинарными кавычками, потому что двойные кавычки будут интерпретировать их как IDENTIFIERS (столбец, таблица и т.д.), А не строки, которые являются стандартным поведением SQL.
Таким образом, ваш запрос должен стать
select * from transactions where transactions.calculatorCode like '%'%';
Во всяком случае, вам следует избегать использования двойных кавычек, чтобы окружать ваши строки, потому что ваша переносимость кода SQL будет сильно затронута. Всегда использовать одинарные кавычки - это правило.
Если он все еще не работает, вы можете попробовать REGEXP_LIKE вместо этого:
select * from transactions WHERE REGEXP_LIKE(calculatorCode, ''');
select * from transactions WHERE calculatorCode RLIKE ''';
calculatorCode RLIKE '`'
- пожалуйста, обновите ответ и примите его. И спасибо за идею регулярного выражения!
mysql> SELECT @@sql_mode;
. , если вы видите это, то вы должны окружать свои строки строк только одинарными кавычками, потому что двойные кавычки будут интерпретировать его как ИДЕНТИФИКАТОР (столбец, таблица и т. д.), а не строку, что является стандартным поведением SQL