Как вы на самом деле ищете backtick в MySql?

0

Мне нужно искать строки, содержащие символ 'в mysql. Я пытаюсь:

select * from transactions where transactions.calculatorCode like "%'%";

но он возвращает ВСЕ записи. Я что-то пропустил?

  • 0
    Сначала проверьте, включен ли режим ANSI_QUOTES : mysql> SELECT @@sql_mode;. , если вы видите это, то вы должны окружать свои строки строк только одинарными кавычками, потому что двойные кавычки будут интерпретировать его как ИДЕНТИФИКАТОР (столбец, таблица и т. д.), а не строку, что является стандартным поведением SQL
  • 0
    У меня такая же проблема с одинарными кавычками ...
Теги:
escaping

1 ответ

1
Лучший ответ

Вы должны сначала проверить, включен ли режим 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 ''';
  • 0
    С mysql 5.6, REGEXP_LIKE не работает, как вы сказали. Это должен быть calculatorCode RLIKE '`' - пожалуйста, обновите ответ и примите его. И спасибо за идею регулярного выражения!
  • 0
    @Merc да, я указал 8.0 синтаксис. Я добавил оба

Ещё вопросы

Сообщество Overcoder
Наверх
Меню