首页 > 数据库 >意外发现openGauss兼容Oracle的几个条件表达式

意外发现openGauss兼容Oracle的几个条件表达式

时间:2024-05-25 18:58:58浏览次数:23  
标签:name 兼容 testdb address Oracle openGauss nvl select

意外发现openGauss兼容Oracle的几个条件表达式

最近工作中发现openGauss在兼容oracle模式下,可以兼容常用的两个表达式,因此就随手测试了一下。

查看数据库版本

[omm@openGauss ~]$ gsql -r
gsql ((openGauss 6.0.0-RC1 build ed7f8e37) compiled at 2024-03-31 11:59:31 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

openGauss=# select version();
                                                                          version                                                                          
-----------------------------------------------------------------------------------------------------------------------------------------------------------
 (openGauss 6.0.0-RC1 build ed7f8e37) compiled at 2024-03-31 11:59:31 commit 0 last mr   on x86_64-unknown-linux-gnu, compiled by g++ (GCC) 10.3.0, 64-bit
(1 row)


查看openGauss数据库的兼容模式

testdb=# select datname,datcompatibility from pg_database;
  datname  | datcompatibility 
-----------+------------------
 template1 | A
 template0 | A
 testdb    | A
 postgres  | A
(4 rows)

decode(expr1, expr2, result1 ,…)

将表达式base_expr与后面的每个compare(n) 进行比较,如果匹配返回相应的value(n)。如果没有发生匹配,则返回default。
decode.png

testdb=# select id,name,address,decode(address,'北京市','BJ','南京市','NJ','ZG') JC from t1;
 id | name | address | jc 
----+------+---------+----
  2 | zs2  | 北京市  | BJ
  4 | zs4  |         | ZG
  1 | zs1  | 南京市  | NJ
(3 rows)

nvl(expr1, expr2)

如果value1为NULL则返回value2,如果value1非NULL,则返回value1。
nvl.jpg

testdb=# select * from t1;
 id | name | address 
----+------+---------
  2 | zs2  | 北京市
  4 | zs4  | 
(2 rows)
testdb=# select id,name,nvl(address,'上海') from t1;
 id | name |  nvl   
----+------+--------
  2 | zs2  | 北京市
  4 | zs4  | 上海
(2 rows)

另外在查看官网文档的过程中,发现在oracle中开发经常使用的nvl、nvl2、decode条件表达式也支持,但是使用需要使用whale插件后才可以使用;另外经过实测发现,nvl、decode在当前openGauss 6.0.0也可以使用,但是nvl2不支持。后来想安装whale插件测试,但是也没有对应版本插件下载的地方,只能下载源码自行编译,这块感觉还是有点不方便。

标签:name,兼容,testdb,address,Oracle,openGauss,nvl,select
From: https://blog.csdn.net/m0_61738548/article/details/139201838

相关文章

  • 世微AP51656 60V高端电流采样降压恒流LED驱动芯片 兼容Vas1260
    产品描述    AP51656是一款连续电感电流导通模式的降压恒流源,用于驱动一颗或多颗串联LED输入电压范围从5V到60V,输出电流可达1.5A。根据不同的输入电压和外部器件,可以驱动高达数十瓦的LED。内置功率开关,采用高端电流采样设置LED平均电流,通过DIM引脚可以接受模......
  • Linux Xorg与Vsync不兼容,使用独显启动,在外置显示器上有时会卡死
    https://www.vsynctester.com/https://forums.developer.nvidia.com/t/bug-having-two-monitor-connected-x11-causes-initial-stutter-when-opening-steam/278749https://www.reddit.com/r/linux_gaming/comments/tdt1gx/looking_for_people_having_stutter_issues_with/h......
  • Oracle视图故事:西游记之三打白骨精
    背景设定                         在遥远的东方,有一个神奇的数据库世界,这里存储着无尽的智慧和信息。在这个世界中,有一位智者——唐僧,他带领着他的三个徒弟:孙悟空、猪八戒和沙僧,踏上了寻找“真经”的征程。然而,这个过程......
  • Oracle创建索引普通索引,唯一索引,复合索引,添加主键
    Oracle创建索引普通索引,唯一索引,复合索引,添加主键创建索引//创建普通索引CREATEINDEX索引名ON表名(列名);//复合索引创建CREATEINDEX索引名ON表名(列名1,列名2,列名3,...);//创建唯一索引CREATEUNIQUEINDEX索引名ON表名(列名);//创建唯一索引CREAT......
  • 院图片库兼容性修复
    图片库问题处理原工程文件使用node-sass,而新版node.js已经弃用,应卸载node-sass,重新安装dart-sass1.卸载node-sassnpmuninstallnode-sass2.安装dart-sassnpminstallsasssass-loader-D3.安装所有包npminstall4.修改element-plus配置https://zhuanlan.zhihu.com/p......
  • Oracle系列---【指定表指定字段数据同步】
    指定表指定字段数据同步1.把A库的A1表中的A11字段赋值给A12字段#把URL_NAME的值迁移到COMMENTS字段UPDATESYS_MENUSETCOMMENTS=URL_NAME;2.把A库的A1表中的A11字段赋值给B库的A1表中的A11字段UPDATECOM_SDM_FROMT.SYS_MENUFRSETFR.URL_NAME=(SELECTURL_NAME......
  • Oracle表空间管理
    oracle表空间相关常用命令小结:1、ALTERDATABASESETDEFAULTBIGFILETABLESPACE;//修改表空间数据文件类型2、ALTERTABLESPACE旧表空间名称TO新表空间名称;//修改表空间名称3、select*fromv$database;showparameterdb......
  • MySQL、SQL Server、Oracle对比,你必须了解的三大数据库区别
    MySQL、SQLServer、Oracle对比,你必须了解的三大数据库区别一、MySQL优点:体积小、速度快、总体拥有成本低,开源;支持多种操作系统;是开源数据库,提供的接口支持多种语言连接操作;MySQL的核心程序采用完全的多线程编程。线程是轻量级的进程,它可以灵活地为用户提供服务,而不过多的......
  • oracle 最简单连接
    一、工程生成可能要改成x64///<summary>///最简单测试不用///</summary>///<returns></returns>[HttpPost]publicWebResponseContentGetTest1(stringpkId){stringstrEms_list_no=......
  • Oracle用户密码修改为永不过期
    Oracle用户密码修改为永不过期1、查询密码有效时长select*fromdba_profileswhereprofile='DEFAULT'andresource_name='PASSWORD_LIFE_TIME';没有修改的话LIMIT是1802、查看用户密码过期时间selectusername,account_status,expiry_date,profilefromdba_users;3、修改......