首页 > 解决方案 > 在 SQL Server 中将 1 列数据拆分为多列,分隔符为双空格

问题描述

下面是我的记录

13;16;AB BC  13;16;BC CD  13;16;CD DE

我想要以下结果

|  Column 1 | Column 2  |  column 3 | 
|-----------|-----------|-----------|
|  13       |        16 |    AB BC  | 
|  13       |        16 |    BC CD  |  
|  13       |        16 |    CD DE  |  

注意:这里我想用双倍空格分割记录,然后用(;)进行内部分割。

虽然我在这里有三列,但在实践中可能更多。因此,解决方案需要灵活。

标签: sql-serversplit

解决方案


Replace好函数,加上动态代码

DECLARE @X VARCHAR(100)='13;16;AB BC  13;16;BC CD  13;16;CD DE'

DECLARE @SQL VARCHAR(MAX)=''

SELECT @SQL = REPLACE( '
SELECT * FROM (
SELECT '''+REPLACE(@X,'  ',''' UNION ALL 
SELECT '''),';',''',''') + '''
)AS TAB(COL1,COL2,COL3)
'

EXEC(@SQL)

结果

COL1    COL2    COL3
13      16      AB BC
13      16      BC CD
13      16      CD DE

推荐阅读