#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?