SQL Server:用“ /”分割字符串,并将每个分割元素放入不同的列中
技术问答
363 人阅读
|
0 人回复
|
2023-09-12
|
我在外部网站上有一张桌子,需要复制到当地的数据库,但需要一些转换。我必须修改的列之一被称为product_url。URL的格式为site.com \
3 t$ E' C2 T) @8 Gcategory \ sub-category \ brand \ model#。( N- x& A# U% W f+ M9 C
在我的本地数据库中,将有来保存此数据。它们将是类别、子类别、品牌和型号#。因此,我必须先修剪site.com(我使用truncate这样做了),但现在我必须分析一下\
0 g( \% x; h8 ^category \ sub-category \ brand \ model#
% `' j+ J% J2 L: m v& b! M* k$ Z我从SO中找到了UDF,我觉得会有帮助的。 f7 P) r } p0 k% q9 \7 G2 @
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经验。
" {0 Z4 y6 r- H* U这就是我现在所拥有的:
. n/ F+ H) B- h: t, q" _+ q$ Yselect s fromdbo.SplitString(select substring(product_url,8,len(product_url)) from Products,'/')where zeroBasedOccurance=0 AS Category显然,这在语法上甚至是不正确的。
# \, ?5 j7 W# o2 e' F$ w4 u我想知道我是否在寻找最好的方法。我还不是DBA专家,所以我很难解决这个问题。我只需要弄清楚如何正确。product_url此应用于表中的每一行UDF约4次。/ ?/ r4 ^( L# ?$ K# }3 l
! {/ ^( g0 |5 }' y) N$ P
解决方案: |
|
|
|
|
|