Mostrando las entradas con la etiqueta Split. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Split. Mostrar todas las entradas

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

lunes, 25 de enero de 2016

50. Split (Ayuda Rápida XII)

Una de las funciones mas útiles al momento de separar cadenas es split, esta nos permite separar textos por algún carácter o conjunto de caracteres, por ejemplo

string cadenas = Hola|mundo

si aplicamos la funcion split

string[] cadena = cadenas.Split('|');

obtenemos un arreglo en el que el primer elemento es Hola y el segundo Mundo

cadena[0] = Hola
cadena[1] = Mundo

Pero el Split puede hacer mas que separar una sola cadena, puede separar por un conjunto de caracteres, ¿Esto para que nos sirve?, para garantizar que el separador del campo es único y reducir la cantidad de errores.

¿y como se usa?

List<string> cfdi = c.Split(new string[] { "\t@@|@@\t" }, StringSplitOptions.None).ToList();

La linea anterior esta buscando una secuencia compleja que es tabulador @@|@@ tabulador, es decir si yo tengo una cadena que reúna esa secuencia la separara.

Esto se vuelve útil cuando un carácter único puede aparecer en la cadena, sobre todo cuando dejamos que el usuario capture en un campo cualquier cadena.

Felices lineas.