首页 > 解决方案 > Teradata:获取大型可变文本字段的特定部分

问题描述

我的第一篇文章:(善良)问题:我需要从包含完整 SQL 语句的文本字段中提取视图名称,以便我可以将该字段链接到不同的数据源。有两个文本字符串始终存在于目标视图的两侧。我希望将这些用作识别“锚点”以及子字符串以从它们之间引入视图名称文本。例子:

from v_mktg_dm.**VIEWNAME** as lead_sql

(大写/粗体是我要提取的)我尝试使用

SELECT 
SUBSTR(SQL_FIELD,INSTR(SQL_FIELD,'FROM V_MKTG_TRM_DM.',19),20) AS PARSED_FIELD
FROM DATABASE.SQL_STORAGE_DATA

但我没有得到好的结果 - 任何帮助表示赞赏

标签: parsingteradata

解决方案


您可以应用正则表达式:

RegExp_Substr_gpl(SQL_FIELD, '(v_mktg_dm\.)(.*?)( AS lead_sql)',1,1,'i',2)

这将查找“v_mktg_dm”之间的字符串。和'作为lead_sql'。

RegExp_Substr_gpl是一种未记录的变体,RegExp_Substr它简化了忽略匹配部分的语法


推荐阅读