¿Cómo separo un campo que empaca varios datos sin llenar el código de SUBSTRING?
Cuaderno N°07 · Serie «Trucos de T-SQL para tu DW»
Por Javier Loria · Lectura ~10 min · SQL Server · Parsing · Data Warehouse
¿Cómo separo un campo por un delimitador en SQL?» o «¿cómo extraigo parte de un texto en SQL Server?» — la pregunta aparece apenas un sistema viejo guarda varios datos en un solo campo: un código de producto que mezcla línea, modelo y color; una cuenta contable con segmentos; un identificador que pega tres cosas con un guión. La respuesta de manual —repetir SUBSTRING y CHARINDEX, o esconderlos en una función— deja un código ilegible y lento, y un proceso que se cae entero el día que llega un dato mal formado.
Este cuaderno muestra cómo parsear un código concatenado de forma legible, rápida y a prueba de datos sucios, usando CROSS APPLY en vez de una función escalar.
Qué vas a encontrar:
- El problema: un campo, tres datos empacados.
- El anti-patrón: repetir CHARINDEX (o esconderlo en una UDF escalar lenta).
- El truco: CROSS APPLY encadenado, legible y rápido.
- La trampa del código sin guión que tumba la consulta entera.
- Por qué STRING_SPLIT no sirve para parsing posicional.
- Qué cambia si estás en Microsoft Fabric.
