viernes, 31 de julio de 2020

247. Obtener un valor de un campo de sql separado por un caracter (split)

Tenemos el siguiente problema, existe en una tabla un campo separado por un ID especial por ejemplo

1|hola|mexico|que tal

Estos valores se encuentran en un solo campo, pero deseamos que solo uno de ellos aparezca en la consulta por ejemplo 

mexico

¿Cómo lo hacemos?

1. Para poder manipular el dato de manera eficiente, podemos convertirlo a un campo de tipo XML

 cast(('<X>'+replace(SalidaSeparada,'|' ,'</X><X>')+'</X>') as xml)

este paso reemplaza el separador y convierte el campo en un campo de XML

2. Ejecutemos esta consulta dentro de otra para poder manipularla como un capo tipo XML

select  
   salida.value('(./X)[15]', 'nvarchar(max)') as Salida from (
  select cast(('<X>'+replace(SalidaSeparada,'|' ,'</X><X>')+'</X>') as xml) as salida 
   from  [tabla] with(nolock) ) as tabla

3. La siguiente función nos permite obtener el campo que se encuentra en una posición especifica

salida.value('(./X)[15]', 'nvarchar(max)') 

felices lineas

No hay comentarios.:

Publicar un comentario