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

如何修改SQL查询以匹配多种格式的地点数据?

问题分析

你的原SQL只替换了字符串中第一处括号及内部内容,而第一种格式包含两处括号((US)和(NY)),处理后会得到United States ;New York ,自然无法匹配目标值United States;New York。

解决方法

方法1:正则全局替换(推荐,支持正则的SQL环境)

用正则匹配所有(...)格式的内容并全局替换,再清理空格:

SELECT * 
FROM TaxonomyLocations_Archive 
WHERE 
  TRIM(
    REPLACE(
      -- 全局替换所有(...)内容(包括括号)
      REGEXP_REPLACE(TaxonomyHierarchy, '\([^)]*\)', '', 'g'),
      ' ;', ';'
    )
  ) = 'United States;New York'
  • \([^)]*\):精准匹配任意以(开头、)结尾的片段
  • 'g':表示全局替换所有匹配项,而非仅第一个
  • TRIM:处理字符串首尾可能残留的空格

方法2:嵌套替换(兼容无正则支持的老版本SQL)

如果你的SQL环境不支持正则,可以通过多次嵌套REPLACE处理多组括号:

SELECT * 
FROM TaxonomyLocations_Archive 
WHERE 
  TRIM(
    REPLACE(
      -- 第一次替换第一处括号内容
      REPLACE(
        TaxonomyHierarchy,
        SUBSTRING(TaxonomyHierarchy, CHARINDEX('(', TaxonomyHierarchy), CHARINDEX(')', TaxonomyHierarchy) - CHARINDEX('(', TaxonomyHierarchy) + 1),
        ''
      ),
      -- 第二次替换剩余的括号内容(如果存在)
      CASE WHEN CHARINDEX('(', TaxonomyHierarchy) > 0 THEN SUBSTRING(TaxonomyHierarchy, CHARINDEX('(', TaxonomyHierarchy), CHARINDEX(')', TaxonomyHierarchy) - CHARINDEX('(', TaxonomyHierarchy) + 1) ELSE '' END,
      ''
    ),
    ' ;', ';'
  ) = 'United States;New York'

注:如果数据中存在超过2组括号,需要继续嵌套REPLACE,灵活性不如正则方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 13:03:20