4 de mayo de 2019
Se puede hacer esto en una instrucción SELECT?
Sí, usted puede usar la función de reemplazar
Para hacer hacer sólo el 1 reemplace puede utilizar :-
SELECT replace(mycolumn,'-42-','ABC') AS mycolumn FROM mytable;
Un ejemplo que muestra este sencillo singular de reemplazo es :-
DROP TABLE IF EXISTS mytable;
CREATE TABLE IF NOT EXISTS mytable (mycolumn);
INSERT INTO mytable VALUES ('1-42-9'),('1429'); -- add some data (one row to be changed, the other not to be changed)
SELECT replace(mycolumn,'-42-','ABC') AS mycolumn FROM mytable; -- Do the replace maintaing the column name
Esto se traduce en :-
Si usted quiere que la más compleja de reemplazo decir la sustitución de dos artículos que usted podría utilizar anidada reemplaza , señalando que esto puede ser bastante tedioso como el reemplazo de la orden es relevante, por ejemplo, para reemplazar -9 con XYZ y -42 - con ABC para que 1-42-9 convertido en 1ABCXYZ, a continuación, puede utilizar :-
SELECT replace(replace(mycolumn,'-9','-XYZ'),'-42-','ABC') AS mycolumn FROM mytable;
Si usted quería múltiples sustituciones de los cuales sólo 1 se haría decir -42 - se sustituye con ABC o -43 - con DEF o -44 - con GHI, entonces usted podría utilizar un CASO CUANDO, a CONTINUACIÓN, TERMINAR de construir a lo largo de las líneas de :-
SELECT
CASE
WHEN instr(mycolumn,'-42-') THEN replace(mycolumn,'-42-','ABC')
WHEN instr(mycolumn,'-43-') THEN replace(mycolumn,'-43-','DEF')
WHEN instr(mycolumn,'-44-') THEN replace(mycolumn,'-44-','GHI')
ELSE mycolumn
END AS mycolumn
FROM mytable;