将逗号分隔的字符串转换为Teradata中的各个行

时间:2015-03-17 17:29:40

标签: string split teradata

我看了帖子: Turning a Comma Separated string into individual rows

非常喜欢这个解决方案:

SELECT A.OtherID,  
     Split.a.value('.', 'VARCHAR(100)') AS Data  
 FROM  
 (     SELECT OtherID,  
         CAST ('<M>' + REPLACE(Data, ',', '</M><M>') + '</M>' AS XML) AS Data  
     FROM  Table1
 ) AS A CROSS APPLY Data.nodes ('/M') AS Split(a); 

但是当我尝试在Teradata中应用该方法来解决类似问题时,它无效。以下是汇总的错误代码: 选择失败3707:期望'。'之间的东西。和'value'关键字。那么代码只在SQL Server中有效吗?有人帮我把它在Teradata或SAS SQL中运行吗?非常感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

这是SQL Server语法。

在Teradata中有一个名为STRTOK_SPLIT_TO_TABLE的表UDF, e.g。

SELECT * FROM dbc.DatabasesV AS db
JOIN 
 (
   SELECT token AS DatabaseName, tokennum
   FROM TABLE (STRTOK_SPLIT_TO_TABLE(1, 'dbc,systemfe', ',')
        RETURNS (outkey INTEGER,
                 tokennum INTEGER,
                 token VARCHAR(128) CHARACTER SET UNICODE)
              ) AS d 
 ) AS dt
ON db.DatabaseName  = dt.DatabaseName
ORDER BY tokennum;

或者查看我对此similar question

的回答