Tengo los siguientes datos de referencia.SQL Select; Concatenando cadenas, evitando comas dobles donde las columnas son nulas?
PERSON_NAME STREET TOWN COUNTY POSTCODE
------------------------------ ------------------------ ---------------- ---------------- ----------
David Smith 30 Johnson Street Norwich Norfolk NA38 3KL
John Brown Douglas Road Cambridge C8 9IJ
Jackie White 8 High Street Ipswich Suffolk IP7 2YT
Andrea Blue 9 Marlborough Ave Bury Suffolk IP4 0XC
Jemima Green Riverside Walk Colchester Essex CO6 7PR
James Gray 167 Hadleigh Place London SW1 4TU
Lo que yo quiero hacer, es para mostrar una lista de nombres de personas, junto con sus direcciones concatenan en una cadena separada por comas.
Esta parte es fácil, he usado el ||
para concat columnas y coloco separadores de coma.
La parte en la que estoy en cuestión es el hecho de que algunas filas no tienen nada en la lista para COUNTY
, por lo tanto, debo evitar mostrar , ,
.
He hecho algunas investigaciones por mí mismo, y he decidido usar el SUBSTR en Oracle para reemplazar las comas dobles, sin embargo, me siento un poco "sucio". ¿Hay una manera más clara de hacerlo, evitando el uso de funciones complejas (como this previous SO question)?
Esto es lo que tengo:
SELECT
SUPPNAME as "Supplier Name",
REPLACE(STREET || ', ' || TOWN || ', ' || COUNTY || ', ' || POSTCODE, ' ,','') as "Supplier Address"
FROM
SUPPLIERS
;
Gracias
He eliminado mi respuesta porque he encontrado que, en concats cadena de Oracle con nulos no producir un nulo (como creo que lo hace en SQL Server), tal como lo mencionaste Empecé a cambiar a las declaraciones de casos, pero luego vi su respuesta: +1 –
+1. @Yahia - Acabas de salvarme un gran dolor de cabeza. ¡Gracias! –