Запрос mysQL помогает относительно текста находки

Я должен получить все строки в который eventname поле содержит этот текст (включая одинарную кавычку)

's Birthday

Я попробовал это, но это дает ошибку:

select * from fab_scheduler where eventname like '%\'s Birthday%'

Как я создаю такой запрос?

Спасибо

1
задан Konerak 12 July 2010 в 13:59
поделиться

3 ответа

Если вы собираетесь включить 's в ваш SQL, вам нужно экранировать его:

Есть несколько способов включить кавычки в строку:

  • Символ "'" внутри строки, процитированной с помощью "'", может быть записан как "''".
  • Символ """ внутри строки, заключенной в кавычки с """, может быть записан как """"
  • Перед символом кавычек ставится символ экранирования ("\")
  • Символ "'" внутри строки, заключенной в кавычки с """, не требует специального обращения и не нужно удваивать или экранировать. В Таким же образом, """ внутри строки, заключенной в кавычки с "'" не нуждается в особом обращении.

Кроме того, если вы создаете SQL в программе, вам следует обратить особое внимание на экранирование переменных, которые входят в SQL-запросы, используя mysql_real_escape_string или его эквивалент в вашем языке программирования. Если этого не сделать, то ваше приложение станет уязвимым для атак SQL-инъекций, проводимых тем, кто контролирует источник данных для указанных переменных (вероятно, ваши пользователи; имейте в виду, что "ваши пользователи" могут означать "весь интернет" в зависимости от обстоятельств).

Edit: Процитировал вышеприведенные инструкции dev.mysql.com.

1
ответ дан 3 September 2019 в 00:40
поделиться
select * from fab_scheduler where eventname like "%'s Birthday%"
0
ответ дан 3 September 2019 в 00:40
поделиться

Используйте двойные кавычки или избегайте одинарных кавычек.

select * from fab_scheduler where eventname like "%'s Birthday%"

select * from fab_scheduler where eventname like '%''s Birthday%'
1
ответ дан 3 September 2019 в 00:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: