SQL选择查询列LIKE

时间:2015-10-27 23:22:40

标签: mysql regex

我有一个包含域名产品的表格,我需要能够根据域名匹配选择正确的产品。

例如,如果域名为google.co.uk,则应返回Domain Name Purchase (.co.uk)的产品,但如果域名为google.uk,则应为Domain Name Purchase (.uk)

如何在相似时选择正确的产品?

我试过这个问题:

SELECT * FROM `prices` WHERE 'google.co.uk' like CONCAT(product, '%')

我也尝试过:

SELECT * FROM `prices` WHERE product LIKE '%google.co.uk%'

第二个查询工作正常。但是,如果查询正在搜索与.uk的匹配项,则它还会返回与.co.uk匹配的商品。

2 个答案:

答案 0 :(得分:1)

根据我的理解,您正尝试分别使用strfoo = 'foo' strbar = 'bar' getattr(strfoo, strbar)() co.uk来查找两个单独的结果集。

.uk

应该为您提供匹配SELECT * FROM `prices` WHERE product LIKE '%.co.uk%'

的结果
.co.uk

只会为您提供匹配SELECT * FROM `prices` WHERE product LIKE '%.uk%' and product NOT LIKE '%.co.uk%' 的结果,并排除.uk

答案 1 :(得分:0)

一个建议是小心这样做,并考虑将来的dB设计

完全限定的域名可以包含任何文本,并且在给定某些指导原则的任何格式下,您可能需要考虑将名称与限定符分开,例如co.uk进入单独的领域