【发布时间】:2015-08-04 13:38:49
【问题描述】:
我有一个表,它有一个值列,将数据列为: 第 1 行:'00','01','02','03' 第 2 行:'03','02','09','08'
我有几个拆分函数
FUNCTION [dbo].[udf_Split](@String varchar(MAX), @Delimiter char(1))
returns @temptable TABLE (Item varchar(MAX))
as
begin
declare @idx int
declare @slice varchar(8000)
select @idx = 1
if len(@String)<1 or @String is null return
while @idx<>0
begin
set @idx = charindex(@Delimiter,@String)
if @idx!=0
set @slice = left(@String,@idx - 1)
else
set @slice = @String
if(len(@slice)>0)
insert into @temptable(Item) values(@slice)
set @String = right(@String,len(@String) - @idx)
if len(@String) = 0 break
end return end;
我正在尝试使用该列创建表的视图,然后我希望我的视图结果是一个行列表,其中每个值都分解为自己的行(并且不同)所以看起来像:(抽动可以留下或消失,现在不要在意它们) 第 1 行:00 第 2 行:01 第 3 行:02 第 4 行:03
我的观点是:
SELECT DISTINCT VALUE FROM TABLE
cross apply dbo.split(Value, ',') as Item
但它不起作用。有人可以给我一些关于我应该如何工作的指导吗?
【问题讨论】:
-
not working是什么意思? -
我运行视图时的结果仍然是原始结果:第 1 行:'01'、'02'、'03' 而不是第 1 行 '01 第 2 行 02 第 3 行 03。我想要一个row 以逗号分隔的每个值分成一行。
-
您正在对
VALUE执行SELECT,这就是它仍在返回原件的原因。SELECT来自dbo.split的字段。SELECT DISTINCT Item.Item ...
标签: sql sql-server function split