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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top