回答

收藏

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

技术问答 技术问答 279 人阅读 | 0 人回复 | 2023-09-12

我在外部网站上有一张桌子,需要复制到当地的数据库,但需要一些转换。我必须修改的列之一被称为product_url。URL的格式为site.com \( d% X( S2 n/ R: J( S
category \ sub-category \ brand \ model#。+ i2 `* \# }$ @6 n( T4 K& l- S* V
在我的本地数据库中,将有来保存此数据。它们将是类别、子类别、品牌和型号#。因此,我必须先修剪site.com(我使用truncate这样做了),但现在我必须分析一下\6 \" h( ?+ K# a! c; N- ]' Y# ~/ c
category \ sub-category \ brand \ model#/ a& O4 L9 H+ a! M+ e  W3 @  S
我从SO中找到了UDF,我觉得会有帮助的。8 X: u: {, n3 t* G2 j& ^
create function dbo.SplitString   @str nvarchar(4000),        @separator char(1)     returns table    AS    return (       with tokens(p,a,b) AS (           select             charindex(@separator,@str)            union all            select                p    1,              b    1,              charindex(@separator,@str,b   1)             from tokens            where b >          select            p-1 zeroBasedOccurance,                                            substring(               @str,                a,                case when b > 0 then b-a ELSE 4000 end)             AS s        from tokens        GO现在我在使用这个功能时遇到了麻烦。也许是因为我缺乏它。UDF经验。; ^! _. v8 Q9 D  j
这就是我现在所拥有的:
% `* I# f, R  D! Pselect s fromdbo.SplitString(select substring(product_url,8,len(product_url))             from Products,'/')where zeroBasedOccurance=0 AS Category显然,这在语法上甚至是不正确的。, `" g9 ]0 P- s' U  t
我想知道我是否在寻找最好的方法。我还不是DBA专家,所以我很难解决这个问题。我只需要弄清楚如何正确。product_url此应用于表中的每一行UDF约4次。; ~8 |) z# N' g$ g! e
                                                                7 W  h4 k% G( H; Y" z/ P
    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则