我有一个MySQL数据库,其中包含一系列英国城镇,其中一个是#34; Connah' Quay"。
我希望能够返回" Connah' Quay"我是否使用过撇号,所以" Connah' Say"和#34; Connahs Quay"返回" Connah的Quay"。
不是创建一个包含两个版本的字段(一个有和另一个没有撇号),是否有一个我可以运行的SQL查询,无论我是否使用过撇号都会返回结果?
QUERY:
SELECT * FROM uk_postcodes WHERE postal_town LIKE "connahs%";
答案 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","'",""),"%");
这将在比较之前从搜索项和列值中删除撇号。