MySQL搜索包含或不包含撇号的关键字

时间:2017-05-02 15:14:18

标签: mysql

我有一个MySQL数据库,其中包含一系列英国城镇,其中一个是#34; Connah' Quay"。

我希望能够返回" Connah' Quay"我是否使用过撇号,所以" Connah' Say"和#34; Connahs Quay"返回" Connah的Quay"。

不是创建一个包含两个版本的字段(一个有和另一个没有撇号),是否有一个我可以运行的SQL查询,无论我是否使用过撇号都会返回结果?

QUERY:

SELECT * FROM uk_postcodes WHERE postal_town LIKE "connahs%";

2 个答案:

答案 0 :(得分:1)

标准方法是规范化数据并搜索数据,如下所示:

SELECT * FROM uk_postcodes WHERE REPLACE(postal_town, '''', '') LIKE 'connahs%';

这在飞行中有点可怕(而不是索引友好),所以你最好存放在桌子上(也意味着你也可以应对“Stow-cum-Quy”与“Stow cum” Quy“等等。

答案 1 :(得分:0)

你可以试试这个:

SELECT * 
FROM uk_postcodes 
WHERE REPLACE(postal_town,"'","") LIKE CONCAT(REPLACE("connah's","'",""),"%");

这将在比较之前从搜索项和列值中删除撇号。