在SQL Server 2008中按逗号分割功能
发布时间:2020-12-12 16:18:40 所属栏目:MsSql教程 来源:网络整理
导读:我知道这个问题已被多次询问,但找不到我需要的东西. 我有这个列“Order”,其中包含以下格式的数据. ‘XXX,YYY,ZZZZ’ 现在,当我执行select语句时,我需要通过拆分这一列来填充3列 例如. Select Name,Surname,FirstCommaColumn=xx.UpToFirstColumn SecondCommaC
我知道这个问题已被多次询问,但找不到我需要的东西.
我有这个列“Order”,其中包含以下格式的数据. ‘XXX,YYY,ZZZZ’ 例如. Select Name,Surname,FirstCommaColumn=xx.UpToFirstColumn SecondCommaColumn=xx.FromFirstCommaToLastComma,ThirdColumnFromSecondCommaOnwards=FromSecondCommaToEnd from myTable --thought of doing something like CROSS APPLY (SELECT TOP 1 * FROM dbo.SplitFunctionIDontHave(order,',')) AS xx 有些行没有逗号,所以我必须返回空白. 如何使用SQL Server 2008执行此操作? 解决方法我已经更改了函数名,因此它不会与Split()函数真正重复.这是代码: CREATE FUNCTION dbo.GetColumnValue( @String varchar(8000),@Delimiter char(1),@Column int = 1 ) returns varchar(8000) as begin declare @idx int declare @slice varchar(8000) select @idx = 1 if len(@String)<1 or @String is null return null declare @ColCnt int set @ColCnt = 1 while (@idx != 0) begin set @idx = charindex(@Delimiter,@String) if @idx!=0 begin if (@ColCnt = @Column) return left(@String,@idx - 1) set @ColCnt = @ColCnt + 1 end set @String = right(@String,len(@String) - @idx) if len(@String) = 0 break end return @String end 以下是用法: select dbo.GetColumnValue('Col1,Field2,VAlue3',3) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |