mysql concat con el recorte
-
11-09-2019 - |
Pregunta
Tengo una tabla que tiene un montón de direcciones en las células etiquetadas dirección | ciudad.Estoy tratando de combinar la dirección completa en el común de la dirección, de la ciudad de formato.
Ocasionalmente, en mi base de datos, voy a tener uno de la ubicación de las celdas vacías.Por lo tanto, hago un IFNULL en mi concat línea, pero termino con una inicial o final ','.He probado el 'recorte' de la función junto con mi concat, pero todavía se tirados ',' en alguna ocasión.
Así es como he escrito mi consulta
SELECT TRIM(BOTH ',' FROM CONCAT(IFNULL(address,''), ', ', IFNULL(city,''))) FROM locals
Alguna idea de por qué me tendría este comportamiento?Hay una mejor manera de construir mi concat declaración?
Solución
Creo que su consulta se acaba perdiendo un espacio después de la coma de la sentencia AMBOS. Que parece funcionar para mí
SELECT TRIM(BOTH ', ' FROM CONCAT(IFNULL(address,''), ', ', IFNULL(city,''))) FROM locals;
Otros consejos
Esto es bastante largo, pero parece que funciona.
SELECT TRIM(CONCAT(IFNULL(address,''), IF(address IS NOT NULL AND city IS NOT NULL, ', ',''), IFNULL(city,''))) FROM locals
Así que con estos datos:
address city
----------------------------
High Street Southampton
NULL London
Station Road NULL
London Road Brighton
Se obtiene lo siguiente:
High Street, Southampton
London
Station Road
London Road, Brighton
decapado separadores sucesivos como "a, b ,,,, c, d, e ,,,,, EED, sffre" parece ser difícil de alcanzar de cualquier solución elegante para GROUP_CONCAT
Métodos utilizados son para crear vistas para cada condición que evita separadores consecutivos y luego una unión o unirse de los individuales tales puntos de vista.