我需要获取eventname
字段包含此文本的所有行(包括单引号)
's Birthday
我尝试了这个,但它给出了错误:
select * from fab_scheduler where eventname like '%\'s Birthday%'
我如何构建此类查询?
由于
答案 0 :(得分:1)
使用双引号或转义单引号。
select * from fab_scheduler where eventname like "%'s Birthday%"
select * from fab_scheduler where eventname like '%''s Birthday%'
答案 1 :(得分:1)
如果您打算在SQL中包含's,则需要escape:
有几种方法可供选择 引用字符串中的字符:
- 带有“'”的字符串中的“'”可写为“''”。
- 引用“”“的字符串中的”“”可写为“”“”
- 通过转义字符(“\”)
在引号字符前面- 用“”“引用的字符串中的”'“不需要特殊处理 不需要加倍或逃脱。在里面 同样的方式,“”在引用的字符串里面 “'”不需要特殊处理。
此外,如果要在程序中构造SQL,则应该强烈考虑使用编程语言中的mysql_real_escape_string
或其等价物来转义进入SQL查询的变量。如果不这样做将使您的应用程序容易受到SQL注入攻击的攻击,无论是谁控制所述变量的数据源(可能是您的用户;请记住,“您的用户”可能意味着“整个互联网”,具体取决于具体情况)。
编辑:引用上面的dev.mysql.com说明。
答案 2 :(得分:0)
select * from fab_scheduler where eventname like "%'s Birthday%"