2014-07-16 71 views
1

我希望有人可以帮我用我正在创建的MySQL查询。MySQL LIKE语句与通配符转折

表:客户 列:ID,customer_firstname,customer_secondname评论

目标:运行一个查询,查找一个短语,以给方差一些考虑。

例如,我想找到:

“客户所在伦敦” “客户所在附近伦敦” “客户位于伦敦”

但我不想找到:

“客户位于伦敦附近的城市”

我只想在查询中使用单个单词“通配符”。到目前为止,我有:

选择 cx.customer_firstname,cx.customer_secondname,cx.comments

FROM custdatacx

WHERE cx.comments LIKE '%位于伦敦%%'

但这是给我“客户位于伦敦附近的城市”,我想避免。

有什么想法?

+0

你期望有多少单词,如“in”,“near”,“towards”?如果它很少,那么你可以用OR来获得所有的案例。 – Feign

回答

3

用MySQL,你可以使用的RLIKE代替LIKE它使用正则表达式,并使用OR(|

SELECT cx.customer_firstname, cx.customer_secondname, cx.comments 
FROM custdatacx 
WHERE cx.comments rlike 'located (in|towards|near) London' 
+0

在你的例子中'rike'应该是'rlike' – ThomasEdwin

+0

@Thomas:typo,thx – mb14

0

看一看关于MySQL手册正则表达式的章节。使用正则表达式,你可以做更复杂的文本搜索。

这就是说,我会认真考虑改变你的哲学。将城市保存为列,计算距离而不是使用'near',这样您就可以更改标准以查找数据。 '接近'相当不准确并且可以解释。说,明天你想知道谁住在牛津附近...你的意见是否仍然有效?