bd5*_*528 1 sql oracle string-concatenation
我有以下脚本: -
select
siteid
address1,
address2,
address3,
address4,
address5
from tblsites
Run Code Online (Sandbox Code Playgroud)
......可能会返回类似的东西: -
siteid address1 address2 address3 address4 address5
123 1 New Street NULL New Town NULL Newvile
456 2 Elm Road NULL NULL New York New York
Run Code Online (Sandbox Code Playgroud)
在Oracle中是否可以可靠地连接这些数据,满足空值,并用逗号分隔字符串.因此,上述数据的所需输出为: -
siteid address
123 1 New Street, New Town, Newvile
456 2 Elm Road, New York, New York
Run Code Online (Sandbox Code Playgroud)
您可以NVL2用来检查地址组件是否为非null:
Oracle 11g R2架构设置:
CREATE TABLE tblsites ( siteid, address1, address2, address3, address4, address5 ) AS
SELECT 123, '1 New Street', CAST( NULL AS VARCHAR2(50) ), 'New Town', NULL, 'Newvile' FROM DUAL UNION ALL
SELECT 456, '2 Elm Road', NULL, NULL, 'New York', 'New York' FROM DUAL;
Run Code Online (Sandbox Code Playgroud)
查询1:
SELECT siteid,
RTRIM(
NVL2( address1, address1 || ', ', NULL )
|| NVL2( address2, address2 || ', ', NULL )
|| NVL2( address3, address3 || ', ', NULL )
|| NVL2( address4, address4 || ', ', NULL )
|| NVL2( address5, address5 || ', ', NULL ),
', '
) AS address
FROM tblsites
Run Code Online (Sandbox Code Playgroud)
结果:
| SITEID | ADDRESS |
|--------|---------------------------------|
| 123 | 1 New Street, New Town, Newvile |
| 456 | 2 Elm Road, New York, New York |
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |