SQL内连接与函数返回表

时间:2013-10-25 18:00:41

标签: sql sql-server tsql

我想知道以下是否可行。

我有一个SQL函数,它分割一个逗号分隔的字符串,返回一个带有分割值的表。

你好,我的名字是约翰

返回一个表格:

ITEM
-----
hello
my name
is
John

A有一个表,为每行存储一个ID和一个逗号分隔的字符串:

VALUE_TO_SPLIT
--------------
1 | a,b,c
1 | d,e,f,g
2 | a,b
3 | a
3 | b,c,f

不使用游标,是否可以获得结果表?

RESULTING_TABLE
1 | a
1 | b
1 | c
1 | d
1 | e
1 | f
1 | g
2 | a 
2 | b
3 | a  
3 | b  
3 | c  
3 | f  

即,每个分割值的行及其id。

1 个答案:

答案 0 :(得分:17)

函数看起来像一个内联表值函数;如果你可以包含这个功能,我们也可以建议它是否是一个有效的实现(not all are)。

SELECT t.col, s.Item
FROM dbo.tablename AS t
CROSS APPLY dbo.function_name(t.value) AS s;

您还应该考虑不首先将单独的值存储为以逗号分隔的列表。数据库表不应该是JSON容器,恕我直言。