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)

Antworten auf die Frage(4)

Ihre Antwort auf die Frage