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

String 如何在teradata中通过分隔符标记字符串,string,teradata,String,Teradata,我有一个以字符串形式存储的值列表[val1,val2,val3]有没有一种方法可以标记这个字符串并以的样式将值堆叠在Teradata 15中?例如 这主要取决于实际值和分隔符 如果任何字符,[]'被视为分隔符: SELECT * FROM TABLE (STRTOK_SPLIT_TO_TABLE(1, '[val1, val2, val3]', ',[] ') RETURNS (keycol INT, tokennum INTEGER, token VARCHAR(100) CHAR

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


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

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

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\u SPLIT\u TO\u表:

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

如果源表中的每个字符串都有一个键列,那么如何将结果表中的两个键列关联起来(例如,将列“ID”添加到returns语句?@sakurashinken:第一个参数(我使用了硬编码的1)是键列,可以是数字,也可以是字符串。
SELECT *
FROM
   TABLE (STRTOK_SPLIT_TO_TABLE(1, '[val1, val2, val3]', ',[] ')
   RETURNS (keycol INT, tokennum INTEGER, token VARCHAR(100) CHARACTER SET UNICODE)) AS dt
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