sql >> Base de Datos >  >> RDS >> Sqlserver

SQL para analizar una cadena de clave-valor

Si puede obtener sus datos en el formato de un par clave/valor por fila, gran parte del trabajo está hecho. Déjame llamar a ese resultado t . Algo como esto podría ayudarte el resto del camino:

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

Esto supone que el id se asigna secuencialmente, como se muestra en su ejemplo.