【发布时间】:2015-02-01 15:05:08
【问题描述】:
我有一个具有以下结构的表
> idx noc
idx 是唯一的报告 ID,但 noc 有一个逗号分隔的值列表。
我需要将它分成一个视图,但我似乎无法弄清楚如何选择我需要的内容 我创建了一个函数拆分,它解析出逗号分隔的值
ALTER FUNCTION [dbo].[udf_Split]
(
@psCSString VARCHAR(8000)
)
RETURNS @otTemp TABLE(sID VARCHAR(20))
AS
BEGIN
DECLARE @sTemp VARCHAR(10)
WHILE LEN(@psCSString) > 0
BEGIN
SET @sTemp = LEFT(@psCSString, ISNULL(NULLIF(CHARINDEX(',', @psCSString) - 1, -1),
LEN(@psCSString)))
SET @psCSString = SUBSTRING(@psCSString,ISNULL(NULLIF(CHARINDEX(',', @psCSString), 0),
LEN(@psCSString)) + 1, LEN(@psCSString))
INSERT INTO @otTemp VALUES (@sTemp)
END
RETURN
END
但我不明白如何获取这些值。
数据库值的一个例子是:
idx 1
noc a,b,c
idx 2
noc a,x
我希望能够看到这个:
1 a
1 b
1 c
2 a
2 x
我需要循环吗?请帮我指出正确的方向。
【问题讨论】:
-
那么,您想在查询表时使用您的函数吗?
-
是的,我想我需要这样做,除非有其他方法可以分解结果集
标签: sql-server sql-server-2008 tsql