sql - SQL Server 2008 中的逗号分割函数

标签 sql sql-server-2008 tsql split

我知道这个问题已被问过很多次,但找不到我需要的。

我有此列“订单”,其中包含以下格式的数据。 '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/

相关文章:

mysql - 将 4 个表连接在一起

mysql - 四舍五入到 0.5 SQL

sql - 在sql server中为数据库图表创建图像

sql-server - 您能解释一下以下代码中 sys.sp_addextendedproperty 的使用吗?

sql - 如何计算1个月currentDate之后的日期

xml - 如何使用 XQuery 更新 XML 变量中的属性值?

sql - Django,如果使用原始 SQL,我应该采取哪些步骤来避免 SQL 注入(inject)攻击?

mysql - 如何去掉不必要的join,更新Where条件

sql - 仅当字符串长度大于 2 时才选择列

sql-server - SQL Server,T-SQL 是否有更快的方法来对我的问题中的以下字符串进行子字符串化?