将多个字符串拆分为多列 [英] Split multiple string's into multiple columns

查看:56
本文介绍了将多个字符串拆分为多列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下三个不同的字符串,它们需要分成三个不同的列.

I have the following three different strings which needs to split into three different columns.

示例:

字符串 1:

Declare @str1 varchar(max) = 'A1,A2,A3'

字符串 2:

Declare @str2 varchar(max) = 'B1,B2,B3'

字符串 3:

Declare @str2 varchar(max) = 'C1,C2,C3'

注意我想将以上三个字符串存储到三个不同的列中.

NoteI want to store the above three strings into three different columns.

预期输出:

colA   colB   colC
------------------
A1     B1     C1
A2     B2     C2
A3     B3     C3

尝试:

SQL Fiddle:http://sqlfiddle.com/#!3/d41d8/41345

推荐答案

我知道它有点重,但它会工作

I know its a bit heavy but it will work

Declare @str1 varchar(max) = 'A1,A2,A3'
Declare @str2 varchar(max) = 'B1,B2,B3'
Declare @str3 varchar(max) = 'C1,C2,C3'

DECLARE @RowCount TINYINT
DECLARE @i        TINYINT = 0

DECLARE @Table AS TABLE

(
 colA  varchar(MAX)
,ColB varchar(MAX)
,ColC varchar(MAX)

)

SET @RowCount =  len(@str1) - len(replace(@str1, ',', ''))

WHILE(@i<=@RowCount)
BEGIN
    INSERT INTO @Table
    SELECT  LEFT(@str1,CHARINDEX(',',@str1+',',0)-1) AS colA
           ,LEFT(@str2,CHARINDEX(',',@str2+',',0)-1) AS colB
           ,LEFT(@str3,CHARINDEX(',',@str3+',',0)-1) AS colC

    SET @str1 = STUFF(@str1,1,CHARINDEX(',',@str1,0),'')
    SET @str2 = STUFF(@str2,1,CHARINDEX(',',@str2,0),'')
    SET @str3 = STUFF(@str3,1,CHARINDEX(',',@str3,0),'')

    SET @i = @i + 1

END

SELECT * FROM @Table

这篇关于将多个字符串拆分为多列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆