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
解决方案: |
|
|
|
|
|