当前位置: 首页 > news >正文

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

意外发现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 | Atemplate0 | Atestdb    | Apostgres  | 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  | 北京市  | BJ4 | zs4  |         | ZG1 | 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)

decode和nvl的使用方法与在Oracle中的使用方式一致,并无差别,这里不做详细介绍。在查看文档过程,官网文档函数和操作符章节与whale插件支持的函数相关章节两个地方都描述了对nvl、decode的支持情况,但是也未发现两处的区别在哪儿?不清楚当使用插件和不使用的情况的功能区别在哪儿呢?另外也发现在oracle中开发经常使用的nvl2条件表达式也支持,但是使用需要使用whale插件后才可以使用;后来想安装whale插件测试,但是也没有对应版本插件下载的地方,只能下载源码自行编译,对于这块感觉还是有点不方便。由于时间的问题也没有进一步编译插件源码进行测试。

http://www.lryc.cn/news/358208.html

相关文章:

  • 使用Keepalived提高吞吐量和负载均衡ip_hash.
  • 网络故障与排除(一)
  • C++之运算符重载
  • 使用springdoc-openapi-starter-webmvc-ui后访问swagger-ui/index.html 报错404
  • 深入理解计算机系统 家庭作业4.52
  • 深度学习:手撕 RNN(2)-RNN 的常见模型架构
  • 【Linux进程篇】Linux进程管理——进程创建与终止
  • Python爬虫实战(实战篇)—17获取【CSDN某一专栏】数据转为Markdown列表放入文章中
  • Go语言-big.Int
  • getContentView(mBinding.getRoot()); 会导致内存泄露吗?里面有SurfaceView ViewBinding
  • 基于transformers框架实践Bert系列6-完形填空
  • cesium绘制编辑区域
  • 数据库攻防之MySQL
  • 八国多语言微盘微交易所系统源码 单控点控 K线完好
  • 爪哇,我初学乍道
  • 【MySQL精通之路】全文搜索(5)-限制
  • 动态规划part03 Day43
  • Activity->Activity生命周期和启动模式
  • 浅谈网络安全态势感知
  • cesium本地文档-天空盒-arcgis切片404-服务查询
  • OpenMv图片预处理
  • Springboot 实战运用
  • kafka的安装与简单使用
  • 【服务器部署篇】Linux下Node.js的安装和配置
  • 【OrangePi AIpro】香橙派 AIpro 为AI而生
  • AES算法
  • 自主创新助力科技强军,麒麟信安闪耀第九届军博会
  • Android Retrofit 封装模版
  • 【介绍下运维开发】
  • mybatis-plus中多条件查询使用and合or嵌套使用