Lo que en PHP podemos hacer fácilmente con la función split() se torna algo más complicado en MySQL.
Estoy migrando una tabla a un nuevo formato, y uno de los datos a migrar es un campo "medidas". Este campo es de tipo Varchar, y contiene strings del tipo "30x50" (es decir, ancho x altura).
Necesito disociar ese campo en dos campos numéricos: "ancho" y "altura"
Dado que no existe una función similar a split(), la improvisación me llevó a esta solucion, que comparto:
INSERT INTO
tabla_nueva ( ancho, alto )
SELECT
left(medidas,instr(medidas,'x')-1),
right(medidas,length(medidas)-instr(medidas,'x'))
FROM tabla_vieja;
instr(medidas,'x') -> devuelve la posición numérica dentro del string 'medidas' donde se encuentra el delimitador 'x'.
left(medidas,instr(medidas,'x')-1) -> devuelve la parte izquierda del string 'medidas' excluyendo la 'x' (sólo devuelve la cifra correspondiente al ancho)
length(medidas)-instr(medidas,'x') -> calcula la cantidad de dígitos que están a la derecha de la 'x' (la cantidad de dígitos del alto)
right(medidas,length(medidas)-instr(medidas,'x')) -> toma lo que está a la derecha de la 'x' (el alto)
Suscribirse a:
Enviar comentarios (Atom)

0 comentarios:
Publicar un comentario en la entrada