Mam następujące dane referencyjne.SQL Select; Łączenie łańcuchów, unikanie podwójnych przecinków, gdy kolumny są puste?
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
Co chcę zrobić, to aby wyświetlić listę nazw osobowych, wraz z ich adresami łączone w ciąg oddzielonych przecinkami.
Ta część jest łatwa, użyłem ||
do łączenia kolumn i umieszczania separatorów przecinków.
Część, o której tu mowa, to fakt, że niektóre wiersze nie zawierają niczego na liście COUNTY
, dlatego należy unikać wyświetlania , ,
.
Zrobiłem kilka badań dla siebie i zdecydowałem się użyć SUBSTR w Oracle, aby zastąpić podwójne przecinki, jednak nie jest to "brudne". Czy jest to czystszy sposób, unikając stosowania złożonych funkcji (takich jak this previous SO question)?
To jest to, co mam:
SELECT
SUPPNAME as "Supplier Name",
REPLACE(STREET || ', ' || TOWN || ', ' || COUNTY || ', ' || POSTCODE, ' ,','') as "Supplier Address"
FROM
SUPPLIERS
;
Dzięki
Usunąłem moją odpowiedź, bo okazało się, że w Oracle smyczkowych concats znakiem null nie daje null (jak wierzę, że robi w SQL Server), tak jak wspomniałeś. Zacząłem przełączać się na opisy spraw, ale wtedy zobaczyłem twoją odpowiedź - +1 –
+1. @Yahia - Właśnie uratowałeś mi ogromny ból głowy. Dzięki! –