gpt4 book ai didi

sql - 甲骨文查询输出用分号分隔

转载 作者:行者123 更新时间:2023-12-03 08:08:05 25 4
gpt4 key购买 nike

我假脱机到.csv文件从oracle表中的一些值。每个值必须用分号分隔。我从中检索数据的查询是这样的:

select TEST1|| ';' ||
to_char(BATCH_DATE,'DD/MM/YYYY')|| ';' ||
to_char(START_TIME,'DD/MM/YYYY HH24:MI:SS') || ';'||
to_char(END_TIME,'DD/MM/YYYY HH24:MI:SS') || ';'||
INPUT
from TEST_TABLE
where to_char(BATCH_DATE,'YYYYMM') = to_char(sysdate,'YYYYMM')-1
and TEST1='ENGLISH'
order by TEST1,BATCH_DATE desc;

虽然这就像一种魅力,但我也想在INPUT的末尾添加一个分号。

我期望(并尝试过)这样的事情:
   select TEST1|| ';' ||
to_char(BATCH_DATE,'DD/MM/YYYY')|| ';' ||
to_char(START_TIME,'DD/MM/YYYY HH24:MI:SS') || ';'||
to_char(END_TIME,'DD/MM/YYYY HH24:MI:SS') || ';'||
INPUT || ';'||
from TEST_TABLE
where to_char(BATCH_DATE,'YYYYMM') = to_char(sysdate,'YYYYMM')-1
and TEST1='ENGLISH'
order by TEST1,BATCH_DATE desc;

但是它不起作用,它给出了ORA-00936:缺少表达式。

最佳答案

选择列表的末尾有一个多余的隐藏运算符(||):

select TEST1|| ';' ||
to_char(BATCH_DATE,'DD/MM/YYYY')|| ';' ||
to_char(START_TIME,'DD/MM/YYYY HH24:MI:SS') || ';'||
to_char(END_TIME,'DD/MM/YYYY HH24:MI:SS') || ';'||
INPUT || ';'
-- || removed ^
from TEST_TABLE
where to_char(BATCH_DATE,'YYYYMM') = to_char(sysdate,'YYYYMM')-1
and TEST1='ENGLISH'
order by TEST1,BATCH_DATE desc;

顺便说一句,您没有提到后台处理的方式,但是,如果您使用的是SQL * Plus,则只需设置列分隔符即可,而不必搞混用法:
-- separate columns with a semicolon  
set colsep ;

spool myfile.csv

-- Straight forward query, no concatination required:
select TEST1,
to_char(BATCH_DATE, 'DD/MM/YYYY')
to_char(START_TIME, 'DD/MM/YYYY HH24:MI:SS')
to_char(END_TIME, 'DD/MM/YYYY HH24:MI:SS')
input
from TEST_TABLE
where to_char(BATCH_DATE, 'YYYYMM') = to_char(sysdate, 'YYYYMM') - 1 and
TEST1='ENGLISH'
order by TEST1, BATCH_DATE desc;

spool off

关于sql - 甲骨文查询输出用分号分隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46297290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com