You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Microsoft Query的SELECT语句在Excel中提取纯主域名

在Excel中提取纯主域名的SQL语句

嘿,这个需求我太懂了!要搞定这个,得先区分两种域名类型:单后缀域名(比如.com、.org)和双后缀域名(比如.co.nz、.co.uk这类国家顶级域名下的二级后缀),然后用Excel支持的Jet/ACE SQL函数来针对性截取。

假设你的域名数据在工作表Sheet1的Domain列里,完整的SELECT语句如下,把这个语句里的逻辑替换掉你说的“something”就行:

SELECT 
    IIF(
        Domain LIKE '%.co.nz' OR Domain LIKE '%.co.uk' OR Domain LIKE '%.gov.uk' OR Domain LIKE '%.org.uk' OR Domain LIKE '%.ac.uk' OR Domain LIKE '%.co.au' OR Domain LIKE '%.net.au' OR Domain LIKE '%.org.au',
        IIF(
            InStrRev(Domain, '.', InStrRev(Domain, '.', InStrRev(Domain, '.') - 1) - 1) = 0,
            Domain,
            Mid(Domain, InStrRev(Domain, '.', InStrRev(Domain, '.', InStrRev(Domain, '.') - 1) - 1) + 1)
        ),
        IIF(
            InStrRev(Domain, '.', InStrRev(Domain, '.') - 1) = 0,
            Domain,
            Mid(Domain, InStrRev(Domain, '.', InStrRev(Domain, '.') - 1) + 1)
        )
    ) AS PrimaryDomain
FROM Sheet1;

语句逻辑拆解

我给你拆解开,你就能明白为啥这么写:

  • 外层IIF:先判断域名是不是双后缀类型(比如.co.nz),如果是就走双后缀的处理逻辑,否则走单后缀逻辑。
  • 双后缀处理内层IIF:
    • 先检查域名有没有3个及以上的层级(比如foo.bar.co.nz有4层),如果没有(比如hey.co.uk只有3层),直接返回原域名;
    • 如果有多层,就从倒数第三个点的下一位开始截取,去掉最前面的子域名(比如把foo.bar.co.nz变成bar.co.nz)。
  • 单后缀处理内层IIF:
    • 先检查域名有没有2个及以上的层级(比如test.com只有2层),如果没有直接返回原域名;
    • 如果有多层,就从倒数第二个点的下一位开始截取,去掉最前面的子域名(比如把sub.test.com变成test.com)。

测试你的例子

用你给的输入测试,结果完全符合预期:

  • sub.test.com → test.com
  • test.com → test.com
  • foo.bar.co.nz → bar.co.nz
  • hey.co.uk → hey.co.uk
  • www.stackoverflow.com → stackoverflow.com

如果还有其他特殊后缀需要支持,直接在外层IIF的LIKE条件里加就行(比如.co.jp这类)。

内容的提问来源于stack exchange,提问作者LWC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:34:57