Я должен получить все строки в который eventname
поле содержит этот текст (включая одинарную кавычку)
's Birthday
Я попробовал это, но это дает ошибку:
select * from fab_scheduler where eventname like '%\'s Birthday%'
Как я создаю такой запрос?
Спасибо
Если вы собираетесь включить 's в ваш SQL, вам нужно экранировать его:
Есть несколько способов включить кавычки в строку:
- Символ "'" внутри строки, процитированной с помощью "'", может быть записан как "''".
- Символ """ внутри строки, заключенной в кавычки с """, может быть записан как """"
- Перед символом кавычек ставится символ экранирования ("\")
- Символ "'" внутри строки, заключенной в кавычки с """, не требует специального обращения и не нужно удваивать или экранировать. В Таким же образом, """ внутри строки, заключенной в кавычки с "'" не нуждается в особом обращении.
Кроме того, если вы создаете SQL в программе, вам следует обратить особое внимание на экранирование переменных, которые входят в SQL-запросы, используя mysql_real_escape_string
или его эквивалент в вашем языке программирования. Если этого не сделать, то ваше приложение станет уязвимым для атак SQL-инъекций, проводимых тем, кто контролирует источник данных для указанных переменных (вероятно, ваши пользователи; имейте в виду, что "ваши пользователи" могут означать "весь интернет" в зависимости от обстоятельств).
Edit: Процитировал вышеприведенные инструкции dev.mysql.com.
select * from fab_scheduler where eventname like "%'s Birthday%"
Используйте двойные кавычки или избегайте одинарных кавычек.
select * from fab_scheduler where eventname like "%'s Birthday%"
select * from fab_scheduler where eventname like '%''s Birthday%'