现一个字符串,格式如下:车位地址1,车态位状1|车位地址2,车位状态2|.....车位地址n,车位状态n
格式说明:
1.记录之间是用“|”号分隔
2.字段之间是用“,”号分隔
需要将其分解为一个临时表,表结构如下:
CREATE TABLE #Tmp
(
BerthCode VARCHAR(20) ,-- 车位地址
BerthStatus VARCHAR(20)-- 车位位状
)
我实现过用“|”分解为临时表,再“,”分解临时表中的记录。。。
但这样我就创建了4个临时表,才达到效果。。
求快捷,简单的SQL语句达到上述要求(可在存储过程中实现)。谢谢。。。
sql 存储 结构 分解
------解决方案--------------------
CREATE TABLE test (id INT,[key] NVARCHAR(256))
INSERT INTO test
VALUES(1,'车位地址1,车态位状1
------解决方案--------------------
车位地址2,车位状态2
------解决方案--------------------
车位地址n,车位状态n')
;WITH cte AS (
SELECT distinct
SUBSTRING([key],number,CHARINDEX('
------解决方案--------------------
',[key]+'
------解决方案--------------------
',number)-number) as [key]
from
test a,master..spt_values
where
number >=1 and number<len([key])
and type='p'
and substring('
------解决方案--------------------
'+[key],number,1)='
------解决方案--------------------
')
SELECT SUBSTRING([key],1,CHARINDEX(',',[key],1)-1) AS BerthCode,SUBSTRING([key],CHARINDEX(',',[key],1)+1,LEN([key])) AS [BerthStatus]
FROM cte
/*
BerthCode BerthStatus