【问题标题】:How to fetch domain names which carry exact TLD from MySQL table column?如何从 MySQL 表列中获取带有精确 TLD 的域名?
【发布时间】:2020-09-08 09:49:22
【问题描述】:

在我的"domains" MySQL 表中,我有一个列"domain_name",其中包含域名,例如

example.com, example.com.au, example.org, example.net, domain.com, etc.

我有一个搜索文本框和一些顶级域 (TLD) 复选框。

我想执行一个搜索查询,根据在搜索文本框中键入的内容和检查的 TLD 从上表中获取域。

我知道我可以借助以下查询根据在文本框中键入的某些字符来搜索域:

SELECT * FROM domains WHERE domain_name LIKE '%" . $domain_name . "%'

但我找不到正确的方法,我只能选择具有某些特定 TLD 的域。此外,可以选中多个 TLD 复选框以查找域。

要根据所选的 TLD 查找域,我尝试了以下查询:

SUBSTRING_INDEX(domain_name, '.', 2) LIKE '%.com%'

但它也获取了.com.au 域。此外,我不能使用此查询来检查不同的 TLD(可能正在使用 IN() 运算符?)。

那么我怎样才能找到在域名中包含字符 c 和 TLD .com 的域?

对于多个 TLDS,我想查找具有字符 c 和 TLDS .com、.com.au、.net 的域?

【问题讨论】:

    标签: mysql


    【解决方案1】:

    % 是通配符运算符。如果你想搜索以 .com 结尾的 URL,那么你可以简单地使用

    LIKE '%.com'
    

    请注意,删除搜索文本末尾的 % 会明确告诉搜索引擎该字符串以 .com 结尾。

    【讨论】:

    • 不,我不能在这里使用LIKE 和% 等,因为我事先不知道要查看主字符串的TLD 是.com 或.com.au .而且,可以搜索多个TLD。
    • @Sachin 是什么阻止你输入domain_name LIKE '%.com' OR domain_name LIKE '%.com.au' ?!
    • @Sachin “但它也获取了 .com.au 域。此外,我无法使用此查询来检查不同的 TLD(可能正在使用 IN() 运算符?)。”摘自您的问题的引文是一个问题陈述,其中指出 SUBSTRING_INDEX(domain_name, '.', 2) LIKE '%.com%' 即使在不需要时也会找到 .com.au 结果。如果您从末尾删除该通配符,那么引用中的问题就解决了。如果您使用多个 LIKE 运算符,由 OR 分隔,如我之前的评论中所述,那么您的评论中的问题也将得到解决。
    • 我试过SELECT * FROM domains WHERE SUBSTRING_INDEX(domain_name, '.', 2) LIKE '%.com' ,它仍然获取.com.au,为什么?
    • @Sachin 因为您不需要致电SUBSTRING_INDEX。请改用domain_name LIKE '%.com'。
    猜你喜欢
    • 1970-01-01
    • 2015-08-05
    • 2010-10-16
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 2018-09-01
    • 2016-11-27
    • 2012-09-04
    相关资源
    最近更新 更多