Teradata: получить определенную часть большого переменного текстового поля - PullRequest
0 голосов
/ 11 октября 2018

Мой первый пост: (будьте любезны) ПРОБЛЕМА: Мне нужно извлечь имя представления из текстового поля, содержащего полные операторы 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

Но не получаю хороших результатов - Любая помощь приветствуется

1 Ответ

0 голосов
/ 11 октября 2018

Вы можете применить регулярное выражение:

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

Это ищет строку между 'v_mktg_dm.'и 'AS lead_sql'.

RegExp_Substr_gpl является недокументированным вариантом RegExp_Substr, который упрощает синтаксис для игнорирования частей совпадения

...