如何替换to_char(, ), 使它成为标准SQL

robixiao 2003-10-11 10:41:58
在Oracle中有如下一段SQL:
select case to_char(sysdate, 'dd')
when '01' then exp_1
when '02' then exp_2
when '03' then exp_3
...
else exp_n
end
from table_1
如何将这段SQL改写成符合SQL-99标准?
我试着使用CAST,但不知如何处理格式'dd'.
...全文
279 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
chanet 2003-10-12
  • 打赏
  • 举报
回复
先 to_char() 再 decode()
robixiao 2003-10-12
  • 打赏
  • 举报
回复
to_char()是Oracle独有的,不属于标准SQL吧! 换句话说,我想上面的SQL在所有遵循SQL-99的database上都能运行,如DB2,SQLServer...都能得出正确结果.
如果能将掩码加入到CAST函数中,我的问题就解决.但我查了些资料文档,没有发现在标准SQL实现类似功能:
cast('12-OCT-2003 as date, format 'dd-mon-yyyy'), --指定格式String转成日期
cast(sysdate as varchar2(2) format 'dd) --指定日期转成特定格式字符
WilliamXiaoLiang 2003-10-12
  • 打赏
  • 举报
回复
先 to_char() 再 decode()
beckhambobo 2003-10-12
  • 打赏
  • 举报
回复
自已写函数,这样再利用oracle移值工具移值到其它数据库吧
robixiao 2003-10-11
  • 打赏
  • 举报
回复
cast 是可以进行数据类型转换,但我不知如何加入日期类型的格式.如'YYYY', 'MM', 'DD' 之类.
select case cast(sysdate as date) -- 所得的是字符串'11-OCT-2003', 但我想行到'11'
when '01' then exp_1
when '02' then exp_2
when '03' then exp_3
...
else exp_n
end
from table_1

如何有CAST中加入格式码?
jiezhi 2003-10-11
  • 打赏
  • 举报
回复
decode-->case
to_char-->cast
robixiao 2003-10-11
  • 打赏
  • 举报
回复
CASE是标准的sql-99, 我现在不能解决的是取Date类型的日期'DD'.
tsj68 2003-10-11
  • 打赏
  • 举报
回复
decode 好象是标准的sql-99,可以试试.
select decode(to_char(sysdate,'dd),'01',exp_1,'02',exp_2,'03',exp_3...exp_n) from table_1

17,088

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧