我正在尝试使用特殊字符在数据库中进行搜索,特别是使用撇号的字符串。
例如,我想搜索字符串:“Sandy's dog”,但我刚刚输入“sandys dog”而忽略了撇号。即使数据库中存在“Sandy's dog”,它似乎也没有在结果中显示出来。
这是我的疑问:
SELECT * FROM `Table` WHERE `Title` LIKE '%sandys dog%'
我到处搜寻,似乎无法找到有效的解决方案。
EDIT 限制:字符串是用户生成的 笔记: - 如果用户使用撇号搜索沙狗,它可以正常工作。 - 最终我希望获得所有可能的结果,如果表包含带和不带撇号的字符串。
答案 0 :(得分:1)
在SQL Server中,您可以使用REPLACE:
SELECT *
FROM Table
WHERE REPLACE(Title, '''', '') LIKE '%sandys dog%'
字符串中的双撇号是一个转义字符,因此它会在字符串中找到任何撇号,并用空字符串替换它们。
答案 1 :(得分:0)
请尝试使用转义序列。
http://dev.mysql.com/doc/refman/5.7/en/string-literals.html
类似于SELECT * FROM Table WHERE Title LIKE '%sandy\'s dog%'
答案 2 :(得分:0)
这个怎么样?
SELECT * FROM Table WHERE Title LIKE '%sandy''s dog%'
或
SELECT * FROM Table WHERE Title LIKE '%sandy_s dog%'
下划线是一个"单个字符"通配符。