以下是SQL查询:
select '"'|| trim(COLUMN1) ||'"|"'|| trim(COLUMN2) ||'"|"'|| trim(COLUMN3) ||'"'
from TABLE1 where ....
我得到的输出是:
"DATA1"|""|"DATA3"
"DATA4"|""|"DATA6"
但是,我想让它显示如下输出:
"DATA1"||"DATA3"
"DATA4"||"DATA6"
这意味着,如果特定列有一些空值,则它不能显示""。我希望你们都明白了。 请帮我实现这一目标,因为我正在自动化这个过程,输出文件直接进入目标应用程序(即我无法手动修改它)。 谢谢!
答案 0 :(得分:2)
如果列为case
null
来避免打印任何内容
select '"'|| trim(COLUMN1) || '"|' ||
case when COLUMN2 is null then '' else '"' || trim(COLUMN2) || '"' end
|| '|"' || trim(COLUMN3) ||'"'
from TABLE1 where ....
答案 1 :(得分:1)
您可以使用NVL2( value, value_if_not_null, value_if_null )
:
SELECT NVL2( COLUMN1, '"' || TRIM( COLUMN1 ) || '"', NULL )
|| '|' || NVL2( COLUMN2, '"' || TRIM( COLUMN2 ) || '"', NULL )
|| '|' || NVL2( COLUMN3, '"' || TRIM( COLUMN3 ) || '"', NULL )
FROM table1
WHERE -- ...
或CASE
:
SELECT CASE WHEN COLUMN1 IS NOT NULL THEN '"' || TRIM( COLUMN1 ) || '"' END
|| '|' || CASE WHEN COLUMN2 IS NOT NULL THEN '"' || TRIM( COLUMN2 ) || '"' END
|| '|' || CASE WHEN COLUMN3 IS NOT NULL THEN '"' || TRIM( COLUMN3 ) || '"' END
FROM table1
WHERE -- ...
答案 2 :(得分:0)
替换功能
select replace('"'|| trim(COLUMN1) ||'"|"'|| trim(COLUMN2) ||'"|"'|| trim(COLUMN3) ||'"', '""','')
from TABLE1 where ....
答案 3 :(得分:0)
使用
REPLACE(String, '""', '')
select REPLACE('"'|| trim(COLUMN1) ||'"|"'|| trim(COLUMN2) ||'"|"'|| trim(COLUMN3) ||'"', '""', '') from TABLE1 where ....