我有一个包含域名产品的表格,我需要能够根据域名匹配选择正确的产品。
例如,如果域名为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
匹配的商品。
答案 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进入单独的领域