msyql搜索域名,没有TLD扩展名

时间:2018-03-22 21:10:06

标签: mysql sql regex search

如何在mysql中没有TLD的情况下搜索域名,例如testdomain.com,我想仅搜索testdomain而不是.com,因此搜索test会返回行,但搜索com则不会。

我认为它与下面的一些正则表达式类似,但不知道如何实现它。

SELECT * FROM domains WHERE domain_name LIKE '%$search%'

关于如何搜索域的那部分的任何想法?

2 个答案:

答案 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。