FEATURED · 精选文章

信创改造:Oracle 转 GaussDB 问题记录

发布时间 / 2026/9/15 13:25:26
来源 / 创域科博编辑部
栏目 / 资讯中心
信创改造:Oracle 转 GaussDB 问题记录 Java程序sql的适配问题虚拟表dualOracle获取一个常量需要通过一个dualguassdb/Opengauss不需虚拟列rownum对于查询返回的每行数据rownum虚拟列会返回一个数字第一行的ROWNUM为1第二行为2以此类推。rownum在select列表中时重写为row_number() over ()rownum在where子句中时重写为limit… offset…虚拟列rowidOracle中的rowid虚拟列返回特定行的具体地址在gauss中重写为tableoid || ‘#’ || ctid字符串函数nvl(col, value)Oracle中的nvl(col, value)用来设置默认值col为空就设置为value在gauss中重写为coalesceOracle中的decode(arg1, arg2, arg3, arg4)函数 表示当 arg1 等于 arg2 时取 arg3否则取 arg4。postgre中没有类似的函数可以重写为case… when…但是guassdb 已经兼容decode 函数了Oracle中的add_months 函数主要是对日期函数进行操作对日期按月增加。在Opengauss没有对应的函数需将其转化为基于日期和interval的运算。或者自己写一个add_months 函数代替,guassdb数据库中 string_agg()函数 可以实现列转行,将某个字段值连接成一个字符串并用逗号和空格, 作为分隔符。string_agg(column_name, separator)日期操作函数select sysdate; --Timestampselect now(); --Timestampz/**YYYY 表示4位年份MM 表示2位月份DD 表示2位天数HH24 表示24小时制的小时数MI 表示分钟数SS 表示秒数*/-- 时间戳转字符串SELECT to_char(sysdate, YYYY-MM-DD HH24:MI:SS) AS formatted_date;-- 字符串转日期SELECT to_date(2025-01-01, YYYY-MM-DD);SELECT CAST(2025-01-01 AS DATE);-- 日期截取/**microseconds微秒milliseconds毫秒second 或 seconds秒minute 或 minutes分钟hour 或 hours小时day 或 days天week 或 weeks周month 或 months月quarter 或 quarters季度year 或 years年‌*/SELECT date_trunc(day, current_timestamp); --2025-01-20 00:00:00.000 0800SELECT date_trunc(hour, current_timestamp);--2025-01-20 17:00:00.000 0800
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻