5

我想知道以下是否可能。

我有一个 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。

4

1 回答 1

18

该函数看起来像一个内联表值函数;如果您可以包含该功能,我们还可以建议它是否是一种有效的实现(并非全部都是)。

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

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

于 2013-10-25T18:09:05.257 回答