如何通过 teradata 中的分隔符标记字符串

How to tokenize string by delimiters in teradata

我有一个存储为 [val1, val2, val3] 形式的字符串的值列表,有没有办法标记这个字符串并在 Teradata 15 中以 的样式堆叠这些值?例如

select <magic function>(values,'[ , ]')

returns

col
------
Val1
Val2
Val3

这主要取决于实际值和分隔符。

如果任何字符 ',[] ' 被视为分隔符:

SELECT *
FROM
   TABLE (STRTOK_SPLIT_TO_TABLE(1, '[val1, val2, val3]', ',[] ')
   RETURNS (keycol INT, tokennum INTEGER, token VARCHAR(100) CHARACTER SET UNICODE)) AS dt

对于像您的 '['']'', ' 这样的多列分隔符,使用 REGEXP_SPLIT_TO_TABLE:

可能更好
SELECT *
FROM
   TABLE (REGEXP_SPLIT_TO_TABLE(1, '[val1, val2, val3]', '(\[|\]|, )', 'i')
   RETURNS (keycol INT, tokennum INTEGER, token VARCHAR(100) CHARACTER SET UNICODE)) AS dt