mysql-apicultur

Como continuación y complemento a la entrada sobre como eliminar caracteres molestos de un campo de una tabla os cuento como modificar una cadena de caracteres de un campo de una tabla para incorporarlo a otro campo.

Para ello vamos a usar dos funciones que manejan cadenas de caracteres, SUBSTR y CONCAT. El ejemplo que vamos a usar es bastante sencillo. Partimos del gentilicio masculino singular y desarrollamos las formas femeninas y plurales del mismo.

En algún caso hay que eliminar caracteres y también unirlos así que es un buen ejemplo. Para evitar eliminar alguno que ya esté hecho, añadimos la condición de que el campo de gentiliciofs sea null.

UPDATE Paises SET
Gentiliciofs = CONCAT (SUBSTRING(gentilicioms,1,LENGTH(gentilicioms)-1),’a’),
Gentiliciofp = CONCAT (SUBSTRING(gentilicioms,1,LENGTH(gentilicioms)-1),’as’),
Gentiliciomp = CONCAT (SUBSTRING(gentilicioms,1,LENGTH(gentilicioms)),’es’)
WHERE gentilicioms LIKE ‘%o’ AND gentiliciofs IS NULL;

Recuerda que en estos entornos no tienes Ctrl-Z. Por supuesto, para hacer todo esto limita el acceso de otros usuarios a la tabla mientras dura el proceso ya que los cambios que hagan ellos no se actualizarán en tu tabla.

¡Atención! estas instrucciones son para sistemas de tablas sencillos, y aislados. Tu debes ser el dueño de estos datos para poder hacer todas estas operaciones y además saber muy bien lo que haces. Tu administrador de sistemas te puede matar si haces alguna de estas instrucciones sin su permiso.

Aprovecho para ponerte los formatos a las instrucciones usadas en la web de MySQL:

La instrucción UPDATE:

Sintaxis para una tabla:

UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
SET col_name1=expr1 [, col_name2=expr2 ...]
[WHERE where_definition]
[ORDER BY ...]
[LIMIT row_count]

Sintaxis para múltiples tablas:

UPDATE [LOW_PRIORITY] [IGNORE] table_references
SET col_name1=expr1 [, col_name2=expr2 ...]
[WHERE where_definition]

La instrucción CONCAT:

mysql> SELECT CONCAT('My', 'S', 'QL');
        -> 'MySQL'
mysql> SELECT CONCAT('My', NULL, 'QL');
        -> NULL
mysql> SELECT CONCAT(14.3);
        -> '14.3'

La instrucción SUBSTR:

mysql> SELECT SUBSTRING('Quadratically',5);
        -> 'ratically'
mysql> SELECT SUBSTRING('foobarbar' FROM 4);
        -> 'barbar'
mysql> SELECT SUBSTRING('Quadratically',5,6);
        -> 'ratica'        
mysql> SELECT SUBSTRING('Sakila', -3);
        -> 'ila'        
mysql> SELECT SUBSTRING('Sakila', -5, 3);
        -> 'aki'
mysql> SELECT SUBSTRING('Sakila' FROM -4 FOR 2);
        -> 'ki'
Share →