Comparar dos cadenas en MySQL con posibles valores null

En un proceso de importación que acabo de terminar de montar, me toca comprobar si un usuario está registrado y como no tenemos DNI toca hacerlo comprobando si el nombre y los apellidos coinciden. No es que sea muy de fiar pero el cliente es lo que pide….
El problema es que el nombre y los apellidos están en tres campos distintos por lo que toca concatenarlos.

SELECT CONCAT(NOMBRE,APELLIDO1,APELLIDO2) FROM tabla;

Primer problema, lo más normal es que la gente meta un espacio ya sea porque se le escape o porque al importarlo lo ha cogido asi que hacemos un concat pero esta vez eliminando los espacios

SELECT REPLACE(CONCAT(NOMBRE,APELLIDO1,APELLIDO2) ), ' ', '') FROM tabla;

Pero claro, si uno de los campos está a null falla fijo así que lo que hacemos es comprobar antes de concatenar si el campo está a null para sustituirlo por un espacio

SELECT REPLACE(CONCAT(COALESCE(NOMBRE,''), COALESCE(APELLIDO1,''), COALESCE(APELLIDO2,'')) ), ' ', '') FROM tabla;

Todo esto claro está, teniendo en cuenta que la base de datos está configurada para que no distinga acentos ni mayúsculas porque si no ya toca rizar el rizo:

SELECT UPPER(REPLACE(CONCAT(COALESCE(NOMBRE,''), COALESCE(APELLIDO1,''), COALESCE(APELLIDO2,'')) ), ' ', '')) FROM tabla COLLATE utf8_bin;
Dejar un comentario?

0 Comentarios.

Deje un comentario


NOTA - Puede usar estosHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.