我们可能在某些业务场景下转换成以下形式:
首先,创建sql 函数,将拼接的字符串拆分成table
CREATE FUNCTION [ dbo ] . [ UF_SplitStringToTable ] ( @sInputList VARCHAR ( MAX ) -- List of delimited items , @sDelimiter VARCHAR ( 20 ) = ‘ , ‘ -- delimiter that separates items ) RETURNS @List TABLE (item VARCHAR ( 50 )) BEGIN DECLARE @sItem VARCHAR ( MAX ) WHILE CHARINDEX ( @sDelimiter , @sInputList , 0 ) <> 0 BEGIN SELECT @sItem = RTRIM ( LTRIM ( SUBSTRING ( @sInputList , 1 , CHARINDEX ( @sDelimiter , @sInputList , 0 ) - 1 ))), @sInputList = RTRIM ( LTRIM ( SUBSTRING ( @sInputList , CHARINDEX ( @sDelimiter , @sInputList , 0 ) + LEN ( @sDelimiter ), LEN ( @sInputList )))) IF LEN ( @sItem ) > 0 INSERT INTO @List SELECT @sItem END IF LEN ( @sInputList ) > 0 INSERT INTO @List SELECT @sInputList -- Put the last item in RETURN END GO
然后,利用cross apply 将表FileHistory 和由此表列:keywords 通过UF_SplitStringToTable(FileHistory.keywords)的派生表连接生成想要的拆分结果。
具体代码如下:
SELECT t1. [ Id ] ,t1. [ Keywords ] ,t1. [ FileName ] ,t1. [ FileExtension ] ,t1. [ CreatedUser ] ,t1. [ CreatedTime ] ,t1. [ ImportType ] ,i.item as keyword FROM FileHistory t1 OUTER APPLY UF_SplitStringToTable(t1.Keywords, ‘ , ‘ ) i
成功执行代码后,返回如下结果:
这样,就完成我们需要的结果啦~
2015,fighting for myself,my dear darling, my family, ~O(∩_∩)O~。
SQL SERVER 一行按照某个由分隔符拼接的字段拆分成多行
标签:
查看更多关于SQL SERVER 一行按照某个由分隔符拼接的字段拆分成多行的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did119218