Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

SQL per analizzare una stringa valore-chiave

Se sei in grado di inserire i tuoi dati nel formato di una coppia chiave/valore per riga, gran parte del lavoro è fatto. Lasciami chiamare quel risultato t . Qualcosa del genere potrebbe farti fare il resto:

select max(case when LEFT(data, 4) = 'key1' then SUBSTRING(data, 6, len(data)) end) as key1,
       MAX(case when LEFT(data, 4) = 'key2' then SUBSTRING(data, 6, len(data)) end) as key2,
       MAX(case when LEFT(data, 4) = 'key2' then SUBSTRING(data, 6, len(data)) end) as key3
from t
group by (id - 1)/3

Ciò presuppone che l'id viene assegnato in sequenza, come mostrato nel tuo esempio.