Ошибка Teradata RegExp_Split_To_Table в TD

#teradata #teradata-sql-assistant #teradatasql

Вопрос:

Не гнездо при кодировании

 with t as
 (
   select MHKAPPEALSINTERNALID as id, 
      Cast(Note as VARCHAR(100)) as Note, 
      UPDATEDAT,
      Cast(MHK_TYPE  as VARCHAR(100)) as MHK_TYPE
   from vcoreMEDHOK_MHK_Notes
   Where cast(UPDATEDAT as Date) >= '2021/08/15'
 ) --- pull table

select MHKAPPEALSINTERNALID, MHK_Type, UpdateAt, Note, 
   regexp_substr(Token, '.*<b>*K.*'),
   dt.*-- trim everything up to '<b>' 
FROM TABLE
 ( RegExp_Split_To_Table(t.id, t.Note,'<b>|</b>|<BR>|</BR>*', 'i')     -- split whenever '</b>' occurs
   RETURNS ( MHKAPPEALSINTERNALID BIGINT,
             TokenNum INT,
             Token VARCHAR(100) CHARACTER SET Unicode,
             MHK_TYPE VARCHAR(100) CHARACTER SET Unicode, 
             UPDATEDAT Date)
           ) AS dt
 

Исключение Teradata: [База данных Teradata] [9881]
Функция ‘RegExp_Split_To_Table’ вызывается с недопустимым числом или типом параметров

Пытаясь понять, почему я получаю это сообщение, когда я перемещаюсь между регулярным выражением и разделенным полем, в нем в основном много данных, которые чаще всего разделяются на ~ и т. Д. Но попытаться вытащить разделы из него всегда сложно, особенно когда у конечного пользователя есть свобода действий.

Комментарии:

1. RegExp_Split_to_Table возвращает 3 столбца, чтобы получить MHK_TYPE и ОБНОВИТЬ, вы должны объединить результат обратно в vcoreMEDHOK_MHK_Notes.

2. Чтобы избежать объединения, вы также можете попытаться объединить MHKAPPEALSINTERNALID, MHK_TYPE и UPDATEDAT в один столбец VarChar и использовать его в качестве идентификатора. А затем примените STRTOK, чтобы разделить его обратно на 3 столбца.

3. @dnoeth отличные предложения.

4. Вы передаете слишком много аргументов. Так и должно быть regexp_split_to_table (<source string>,<regex>,<match argument>) .

5. Я озадачен >* шаблонами регулярных выражений. Вы действительно имеете в виду совпадение с нулем или более > символов? Или предыдущее выражение должно быть заключено в круглые скобки, за которыми следует a ?