提问人:user5507535 提问时间:4/27/2021 最后编辑:user5507535 更新时间:4/28/2021 访问量:180
COLLECT 语句中 ORDER BY 的语法错误
Syntax error in ORDER BY in COLLECT statement
问:
为什么我在此代码中收到语法错误:order by
语法错误由 Oracle SQL Express 和 https://www.eversql.com/sql-syntax-check-validator/ 报告
select cast(collect(
case
when (1 = 1) then
'aaa'
else 'bbb'
end
order by mt.my_col) as t_varchar2_tab)
from my_table mt;
答:
2赞
Sayan Malakshinov
4/27/2021
#1
只需再添加一个:cast
select cast(collect(
cast(
case
when (1 = 1) then
'aaa'
else 'bbb'
end
as varchar2(100)
)
order by mt.my_col) as t_varchar2_tab)
from my_table mt;
完整示例:
with my_table as (select to_char(level,'000') my_col from dual connect by level<=10)
select cast(collect(
cast(
case
when (1 = 1) then
'aaa'
else 'bbb'
end
as varchar2(100)
)
order by mt.my_col) as t_varchar2_tab)
as res
from my_table mt;
RES
-------------------------------------------------------------------------------------
T_VARCHAR2_TAB('aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa')
不要将eversql用于Oracle SQL。它仅支持 MySQL
评论
0赞
user5507535
4/28/2021
抱歉,您的示例仍然被 SQL 开发人员报告包含语法错误,我这里的版本是 19.2.1.247。order by
0赞
Sayan Malakshinov
4/28/2021
您的 Oracle 数据库版本是什么?select * from v$version
0赞
user5507535
4/28/2021
Oracle Database 19c 标准版 2 版本 19.0.0.0.0 — 生产。SQL Developer 的版本为 19.2.1.247。
0赞
Sayan Malakshinov
4/28/2021
显示完整的测试用例和错误输出。
0赞
user5507535
4/28/2021
使用错误图像更新了问题。
评论