如何在mysql中没有TLD的情况下搜索域名,例如testdomain.com,我想仅搜索testdomain
而不是.com
,因此搜索test
会返回行,但搜索com
则不会。
我认为它与下面的一些正则表达式类似,但不知道如何实现它。
SELECT * FROM domains WHERE domain_name LIKE '%$search%'
关于如何搜索域的那部分的任何想法?
答案 0 :(得分:0)
您可以执行以下操作:
SELECT * FROM domains
WHERE SUBSTRING_INDEX(domain_name, '.', 1) LIKE '%$search%'
答案 1 :(得分:0)
如果您正在寻找一个以字符串开头的名称,您的查询必须是:
SELECT * FROM domains WHERE domain_name LIKE '$search%'
这个查询是一个很好的查询,因为它使用索引。
添加“。”最后的角色你只能找到全名, 此查询也是一个很好的查询,因为它使用索引。
SELECT * FROM domains WHERE domain_name LIKE '$search.%'
否则,如果要进行部分搜索,则需要在术语之前和之后添加%,但在这种情况下“com”搜索将匹配,此搜索不好,因为它不使用索引。
最后这个表达式搜索包含不包括TLD的名称的字符串,这不是一个好的查询,因为它不使用索引。
SELECT * FROM domains WHERE domain_name LIKE '%$search%' and not like '%.$search%'
一个好主意可能是在您的数据库中拆分字段,为没有TLD的域名创建一个列(或一个额外的colunm)并搜索这个新的coloumn。