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

如何解析表中DB字段连接串提取HOST、SERVER_NAME并按格式输出

你存储的DB字段为固定键值结构的类Oracle TNS连接串,不需要使用CATSEARCH全文检索函数,通过正则表达式匹配截取对应键值即可实现需求,不同数据库环境的实现写法如下:

Oracle 环境写法(最适配当前存储的TNS串格式)

使用REGEXP_SUBSTR函数按规则匹配目标值,参考SQL:

SELECT 
  Name AS NAME,
  Age AS AGE,
  TRIM(REGEXP_SUBSTR(DB, 'HOST\s*=\s*([^)]+)', 1, 1, NULL, 1)) AS HOST,
  TRIM(REGEXP_SUBSTR(DB, 'SERVER_NAME\s*=\s*([^)]+)', 1, 1, NULL, 1)) AS SERVER_NAME
FROM 你的实际表名;

正则逻辑说明:

  • \s*匹配任意数量的空白字符,可自动兼容等号前后空格、字段值前后多余空格、部分行DB字段开头无空格的格式差异
  • 捕获组([^)]+)匹配从等号后开始,到第一个右括号)前的所有内容,即为需要提取的HOST、SERVER_NAME值
  • 外层TRIM用于清除截取结果首尾可能残留的空白,保证输出格式对齐

MySQL 8.0+ 环境写法

使用REGEXP_REPLACE替换整段文本保留目标值,参考SQL:

SELECT 
  Name AS NAME,
  Age AS AGE,
  TRIM(REGEXP_REPLACE(DB, '.*HOST\\s*=\\s*([^)]+).*', '$1')) AS HOST,
  TRIM(REGEXP_REPLACE(DB, '.*SERVER_NAME\\s*=\\s*([^)]+).*', '$1')) AS SERVER_NAME
FROM 你的实际表名;

上述写法在你给出的示例数据上执行后,输出结果和预期完全一致:

NAME, AGE , HOST , SERVER_NAME 
Ali , 24  , abc.com.xxx , xyzui
Bob , 20  , xyz.com.xxx , avhyi
Cin , 22  , tyu.com.xxx , yuiop

注意:如果后续DB字段的存储结构出现多层嵌套括号的变动,需要对应调整正则匹配规则,现有固定结构下上述写法可稳定运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 17:30:48