SQL在具有特殊字符的DB中搜索字符串

时间:2016-10-28 17:56:41

标签: php mysql sql

我正在尝试使用特殊字符在数据库中进行搜索,特别是使用撇号的字符串。

例如,我想搜索字符串:“Sandy's dog”,但我刚刚输入“sandys dog”而忽略了撇号。即使数据库中存在“Sandy's dog”,它似乎也没有在结果中显示出来。

这是我的疑问:

SELECT *  FROM `Table` WHERE `Title` LIKE '%sandys dog%'

我到处搜寻,似乎无法找到有效的解决方案。

EDIT 限制:字符串是用户生成的 笔记: - 如果用户使用撇号搜索沙狗,它可以正常工作。 - 最终我希望获得所有可能的结果,如果表包含带和不带撇号的字符串。

3 个答案:

答案 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%'

下划线是一个"单个字符"通配符。