Oracle 19c中如何提取可变长度Var_开头变量并拆分至多列
Oracle 19c 提取脚本中的Var_前缀变量并拆分列
针对你的需求,可通过Oracle 19c的正则表达式函数实现从Script列中提取以Var_开头的变量,并拆分为Var1、Var2、Var3列,具体方案如下:
测试数据准备(可选)
如果需要验证效果,可先创建测试表并插入示例数据:
CREATE TABLE test_data ( Ident VARCHAR2(10), Script VARCHAR2(200) ); INSERT INTO test_data VALUES ('ID1', 'Var_xxx_calc + Var_yyy_db + Var_zzz_calc'); INSERT INTO test_data VALUES ('ID2', 'if Var_xxx_calc + Var_zzz_db > 10 then ''OK'' else ''NOK''');
核心查询语句
替换test_data为你的实际表名,执行以下SQL即可得到目标结果:
SELECT Ident AS "标识(Ident)", Script AS "脚本(Script)", REGEXP_SUBSTR(Script, 'Var_[^[:space:]+><=''()]+', 1, 1) AS Var1, REGEXP_SUBSTR(Script, 'Var_[^[:space:]+><=''()]+', 1, 2) AS Var2, REGEXP_SUBSTR(Script, 'Var_[^[:space:]+><=''()]+', 1, 3) AS Var3 FROM test_data;
正则表达式说明
Var_[^[:space:]+><=''()]+ 的含义:
Var_:匹配变量的固定前缀[^[:space:]+><=''()]+:匹配任意多个不是空格、+、>、<、=、单引号、括号的字符,确保完整提取变量名(适配任意长度的Var_前缀变量)
若脚本中还有其他可能的变量分隔符(比如-、*等),只需在[^...]中添加对应的字符即可。
内容的提问来源于stack exchange,提问作者MatthiasF
相关产品推荐
相关产品推荐

