我想知道以下是否可行。
我有一个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。
答案 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容器,恕我直言。