我的表中有以下值:
当我不知道该怎么做时
注意撇号已经被转义。现在我想使用以下SQL字符串从该表中选择此值:
SELECT * FROM wp_wpsc_productmeta
WHERE meta_value
='当我不知道该怎么做'
我收到了0行。当我将SQL字符串更改为:
SELECT * FROM wp_wpsc_productmeta
WHERE meta_value
LIKE'When I'Don%'
我正确地得到了我的结果集。所以,我的问题是,如何编写SQL字符串,以便当该值中有一个已经转义过的撇号时,我可以从表中选择一个值?
请不要回答我应该使用参数。我非常想用我正在尝试的方法找出答案。谢谢你的帮助!
答案 0 :(得分:2)
您需要同时使用反斜杠和引号:
'I don\\\'t know';
问题是斜杠和引号也是编程语言中的特殊字符。所以当你输入时:
'I don\'t know';
数据库看到的是'I don't know'
,它不存在。另一方面,如果您像这样双重逃避字符串:
'I don\\\'t know';
...发送到数据库的结果是'I don\'t know'
,这就是你想要的。
答案 1 :(得分:2)
如果数据库中的字符串实际上是“当我不知道该怎么做”时,如果包含反斜杠,那么要搜索它,您需要使用该语句。
SELECT * FROM wp_wpsc_productmeta WHERE meta_value = 'When I Don\\''t Know What To Do'
或
SELECT * FROM wp_wpsc_productmeta WHERE meta_value = 'When I Don\\\'t Know What To Do'
答案 2 :(得分:1)
您使用的是哪种语言?我认为这种语言可能是将逃避反斜杠解释为逃避它的好处,所以你可能需要做两次以确保数据库也能看到它:
'I don\\\'t know';