有這樣的一個坐標引數表:
X,Y,D,L之前是空格字符,以分號為一組
表A:
A01條碼 A02引數
8888 X=983 Y=217 D=12 L=N;X=983 Y=517 D=12 L=N;X=944 Y=100 D=12 L=N;X=944 Y=634 D=12 L=N;
9999 X=983 Y=239 D=12 L=N;X=983 Y=539 D=12 L=N;X=944 Y=100 D=12 L=N;
....
現想生成行列結構的表,按條碼分割生成5個列,表結構是:
表B:
條碼, X, Y, D, L
----------------------------------
8888 983 217 12 N
8888 983 517 12 N
8888 994 100 12 N
8888 994 634 12 N
9999 983 239 12 N
9999 983 539 12 N
9999 944 100 12 N
uj5u.com熱心網友回復:
STRING_SPLIT函式2012開始有,如果沒有自己寫一個分隔函式--測驗資料
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([A01條碼] NVARCHAR(20),[A02引數] nvarchar(128))
Insert #T
select '8888',N'X=983 Y=217 D=12 L=N;X=983 Y=517 D=12 L=N;X=944 Y=100 D=12 L=N;X=944 Y=634 D=12 L=N;' union all
select '9999',N'X=983 Y=239 D=12 L=N;X=983 Y=539 D=12 L=N;X=944 Y=100 D=12 L=N;'
Go
--測驗資料結束
SELECT A01條碼,
(
SELECT REPLACE(t2.value,'X=','') FROM STRING_SPLIT(t.value, ' ') t2 WHERE t2.value LIKE 'X=%'
) AS X,
(
SELECT REPLACE(t2.value,'Y=','') FROM STRING_SPLIT(t.value, ' ') t2 WHERE t2.value LIKE 'Y=%'
) AS Y,
(
SELECT REPLACE(t2.value,'D=','') FROM STRING_SPLIT(t.value, ' ') t2 WHERE t2.value LIKE 'D=%'
) AS D,
(
SELECT REPLACE(t2.value,'L=','') FROM STRING_SPLIT(t.value, ' ') t2 WHERE t2.value LIKE 'L=%'
) AS L
FROM #T
CROSS APPLY
(SELECT * FROM STRING_SPLIT([A02引數], ';')) t
WHERE t.value <> '';
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/211542.html
標籤:應用實例
上一篇:mysql資料庫。 一張表有另一張表的外鍵,此表中已經有了資料。問現在我洗掉了外鍵關聯,刪不了資料,請問如何才能洗掉此表中的資料?
