Saltar al contenido
Codif铆ca.me | Desarrollo web | Programaci贸n

Substring de cadenas por caracter | MySql

9 diciembre, 2016

Funciones que utilizo para realizar substring de cadenas en mysql.

En este caso he scrappeado todas las categorias de una web que ten铆a cientos de categor铆as, despu茅s de recoger los datos tengo todos los datos en var铆as columnas y miles de filas, no obstante necesito dividir m谩s los datos en substrings.

Lo primero es encontrar el denominador comun por el que quieres separar los datos, en mi tabla puedo ver que quiero separarlos desde el caracter *, y desde la palabra Ref: (que es la referencia de unos productos)

Esta select recuperar铆a del primer campo c2, todo lo que venga antes del primer caracter * contando desde la izquierda , y tambi茅n todo el texto que venga despu茅s del segundo caracter * contando desde la derecha.

Substring

La primera parte utilizo LEFT e INSTR, ser铆a as铆:

SELECT 
LEFT( c2, INSTR( c2,  "*" ) -1 ) AS Principal
FROM datos;

La segunda parte utilizo SUBSTRING_INDEX, quedar铆a as铆:

SELECT 
SUBSTRING_INDEX( c2,  '*' , -2 ) AS Subcategoria,
FROM datos;

La select completa d贸nde realizo substring tambi茅n de las referencias de los productos , cortando los string a partir de la palabra “Ref:”.

SELECT 
LEFT( c2, INSTR( c2,  "*" ) -1 ) AS Principal,
SUBSTRING_INDEX( c2,  '*' , -2 ) AS Subcategoria,
LEFT( c3, INSTR( c3,  "Ref:" ) -1 ) AS Descripcion, 
SUBSTRING_INDEX( c3,  'Ref:' , -1 ) AS REF
FROM datos;
mysql> SELECT SUBSTRING_INDEX('esto es un texto * esto es otro *','.',-2);
+-------------------------------------------------------------+ 
| SUBSTRING_INDEX('esto es un texto * esto es otro *','*',-2) | 
+-------------------------------------------------------------+ 
| esto es otro * |
+-------------------------------------------------------------+ 
1 row in set (0.00 sec) 

Y listo, f谩cil no? , solo tienes que sustituir los caracteres y campos de tus tablas para realizar subtrings cortando las cadenas a tu gusto.