您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

SQL Server:用“ /”分割字符串,并将每个分割元素放入不同的列中

SQL Server:用“ /”分割字符串,并将每个分割元素放入不同的列中

不确定您的功能,但这是我的:

CREATE FUNCTION dbo.FN_PARSENAME(@chunk VARCHAR(4000), @delimiter CHAR(1), @index INT )
RETURNS VARCHAR(1000)
AS
BEGIN
DECLARE
    @curIndex INT = 0,
    @pos INT = 1,
    @prevPos INT = 0,
    @result VARCHAR(1000)

WHILE @pos > 0
BEGIN

    SET @pos =  CHARINDEX(@delimiter, @chunk, @prevPos);

    IF(@pos > 0)
    BEGIN -- Characters between position and prevIoUs position
        SET @result = SUBSTRING(@chunk, @prevPos, @pos-@prevPos)
    END
    ELSE
    BEGIN -- Last Delim
        SET @result = SUBSTRING(@chunk, @prevPos, LEN(@chunk))
    END

    IF(@index = @curIndex)
    BEGIN
        RETURN @result
    END

    SET @prevPos = @pos + 1
    SET @curIndex = @curIndex + 1;
END
RETURN '' -- Else Empty
END

您这样称呼它:SELECT Address_Line1 = dbo.fn_Parsename(Merged,'|', 0) FROM Table

其中合并的字段是定界的,“ |” 是定界符,因此您将其定为“ \”,0是您想要的字符串的哪一部分,0是第一个

以您的示例为例:

SELECT category = dbo.fn_Parsename(product_url,'\', 1)
     , sub-category = dbo.fn_Parsename(product_url,'\', 2)
     , brand = dbo.fn_Parsename(product_url,'\', 3)
     , model# = dbo.fn_Parsename(product_url,'\', 4)
FROM Table

或0-3视情况而定。

我非常有信心,我从发现的内容(甚至在SO上)中改编了该内容,但我不记得谁应该得到认可。

SQLServer 2022/1/1 18:26:23 有441人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶