我看了帖子: 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中运行吗?非常感谢您的帮助!
答案 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
的回答