Read char, double, int pattern von string in sql
Sie haben eine Zeichenfolge wie
set @string = 'ddd,1.5,1,eee,2.3,0,fff,1.2,ggg,6.123,1'
Ich möchte wissen, ob es eine Möglichkeit gibt, die Zeichenfolgenwerte zu extrahieren und in die erste Zeile, die doppelten Werte und in die zweite Zeile und die int-Werte zu platzieren und in die dritte Zeile zu platzieren. Die Zeichenfolgenlogik lautet so wa
"string,double,int,string,double,int..."
aber es gibt Fälle, in denen es @ gi
"string,double,int,string,double,string,double,int"
und ich möchte in der dritten Zeile, wo die Int 1 sein sollte, damit die Tabelle ungefähr so aussieht.
First Row Second Row Third Row
ddd 1.5 1
eee 2.3 0
fff 1.2 1
ggg 6.123 1
Ich habe einen Code, in dem Sie alle Werte aus der Zeichenfolge extrahieren und in eine Zeile einfügen können, aber das reicht nicht aus.
declare @string as nvarchar(MAX)
set @string = 'aaa,bbb,ccc,ddd,1.5,1,eee,2.3,1,fff,1.2,ggg,6.123,1'
;with tmp(DataItem, Data)
as (
select LEFT(@string, CHARINDEX(',',@string+',')-1),
STUFF(@string, 1, CHARINDEX(',',@string+','), '')
union all
select LEFT(Data, CHARINDEX(',',Data+',')-1),
STUFF(Data, 1, CHARINDEX(',',Data+','), '')
from tmp
where Data > '')
select DataItem from tmp
option (maxrecursion 0)