Tôi có dữ liệu tham chiếu sau đây.Chọn SQL; Ghép nối các chuỗi, tránh dấu phẩy kép trong đó các cột là null?
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
Điều tôi muốn làm là hiển thị danh sách tên người, cùng với địa chỉ của chúng được nối vào chuỗi được phân cách bằng dấu phẩy.
Phần này rất dễ, tôi đã sử dụng ||
cho các cột đồng thời và đặt dấu phân cách bằng dấu phẩy.
Phần tôi đang đề cập đến, là một số hàng không có bất kỳ thứ gì được liệt kê cho COUNTY
, do đó tôi cần tránh hiển thị , ,
.
Tôi đã thực hiện một số nghiên cứu cho bản thân mình và đã quyết định sử dụng SUBSTR trong Oracle để thay thế dấu phẩy kép, tuy nhiên nó cảm thấy hơi "bẩn". Có cách nào làm sạch hơn, tránh sử dụng các chức năng phức tạp (chẳng hạn như this previous SO question)?
Đây là những gì tôi có:
SELECT
SUPPNAME as "Supplier Name",
REPLACE(STREET || ', ' || TOWN || ', ' || COUNTY || ', ' || POSTCODE, ' ,','') as "Supplier Address"
FROM
SUPPLIERS
;
Cảm ơn
Tôi đã xóa câu trả lời của mình vì tôi thấy rằng trong chuỗi Oracle concats với NULL không mang lại giá trị rỗng (như tôi tin là SQL Server), giống như bạn đã đề cập. Tôi bắt đầu chuyển sang báo cáo trường hợp, nhưng sau đó nhìn thấy câu trả lời của bạn - +1 –
+1. @ Yahia - Bạn vừa mới cứu tôi một cơn đau đầu rất lớn. Cảm ơn! –