【问题标题】:How to tokenize string by delimiters in teradata如何通过 teradata 中的分隔符对字符串进行标记
【发布时间】:2015-08-15 15:18:15
【问题描述】:

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

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

返回

col
------
Val1
Val2
Val3

【问题讨论】:

    标签: string teradata


    【解决方案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
    

    对于像你这样的多列分隔符'['']'', ' 使用 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
    

    【讨论】:

    • 如果源表的每个字符串都有一个键列,我将如何在结果表中将两者关联起来(例如在返回语句中添加一个列'ID'?)
    • @sakurashinken:第一个参数(我用的是硬编码的1)是键列,可以是数字也可以是字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    • 2013-03-03
    • 2016-01-26
    • 2015-11-02
    • 1970-01-01
    • 2013-12-07
    相关资源
    最近更新 更多