【发布时间】:2019-05-30 10:08:20
【问题描述】:
在 Oracle SQL 中,我试图从几个看起来像这样的字段中连接一个地址
CREATE TABLE sql_test_c
(
ADDRESS_LINE varchar(255),
ADDRESS_LINE_2 varchar(255),
ADDRESS_LINE_3 varchar(255),
CITY_NAME varchar(255),
STATE_CODE varchar(255),
ZIP_CODE varchar(255)
);
INSERT INTO sql_test_c (ADDRESS_LINE, ADDRESS_LINE_2, CITY_NAME, STATE_CODE, ZIP_CODE) VALUES ('Business Name', '123 Main Street', 'Seattle', 'WA', '12345');
不幸的是,在我的数据集中,有很多地址在 ADDRESS_LINE_3 中没有任何内容(比如这个),所以当我使用时
SELECT ADDRESS_LINE || ', ' ||
ADDRESS_LINE_2 || ', ' ||
ADDRESS_LINE_3 || ', ' ||
CITY_NAME || ', ' ||
STATE_CODE || ' ' ||
ZIP_CODE
FROM sql_test_c;
我结束了
Business Name, 123 Main Street, , Seattle, WA 12345
地址和城市之间的这两个逗号。如果列是否为空,有没有办法动态包含列?我尝试过各种形式的合并,例如:
SELECT ADDRESS_LINE || ', ' ||
ADDRESS_LINE_2 || ', ' ||
COALESCE(ADDRESS_LINE_3 || ', ', '') ||
CITY_NAME || ', ' ||
STATE_CODE || ' ' ||
ZIP_CODE
FROM sql_test_c;
但它似乎并没有改变任何东西
【问题讨论】:
-
我不会那样做;处理结果的下游人员或代码让他们的生活陷入困境,因为他们现在必须计算出 CSV 中有多少地址。只需将该列留空即可。
-
@RobertHarvey 这是一个 UI,所以在地址中间有 , , 看起来很糟糕。
-
@JoshEller 这个答案很有效,谢谢