我知道这个问题已被问过很多次,但找不到我需要的。
我有此列“订单”,其中包含以下格式的数据。 'xxx,yyy,zzzz'
现在当我做我的 select
声明我需要通过拆分这一列来填充 3 列
例如。
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 执行此操作?
如果有所不同,此选择是 View 的一部分
最佳答案
我已经更改了函数名称,因此它不会与 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)
关于sql - SQL Server 2008 中的逗号分割函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20512855/