LightDB 24.1 UNION支持null类型匹配

背景介绍

在LightDB 24.1之前的版本,UNION null类型匹配会报错。

sql 复制代码
lightdb@postgres=# select null l_zqlbmx2          
union all
select null l_zqlbmx2          
union all
select sysdate l_zqlbmx;
ERROR:  UNION types text and timestamp without time zone cannot be matched
LINE 5: select sysdate l_zqlbmx;

lightdb@postgres=# select null l_zqlbmx2
union all
select null l_zqlbmx2
union all
select 2 l_zqlbmx;
ERROR:  UNION types text and integer cannot be matched
LINE 5: select 2 l_zqlbmx;
               ^

为了兼容Oracle数据库的使用,在LightDB24.1版本中,支持了UNION null 类型与其他类型的强转。
使用约束:

  1. 在Oracle模式下生效;
  2. null类型在LightDB中是text类型,如果匹配的类型无法强转成text类型,则UNION语句仍然会报错;

使用示例

  1. null 和 int
sql 复制代码
lightdb@oracle_test=# select null l_zqlbmx2 from dual
lightdb@oracle_test-# union all
lightdb@oracle_test-# select null l_zqlbmx2 from dual
lightdb@oracle_test-# union all
lightdb@oracle_test-# select 0 l_zqlbmx from dual;
 l_zqlbmx2 
-----------
 
 
 0
(3 rows)

lightdb@oracle_test=# \gdesc
  Column   | Type 
-----------+------
 l_zqlbmx2 | text
(1 row)
  1. null和numeric
sql 复制代码
lightdb@oracle_test=# select null l_zqlbmx2 from dual
union all
select null l_zqlbmx2 from dual
union all
select 5.55::numeric l_zqlbmx from dual;
 l_zqlbmx2 
-----------
 
 
 5.55
(3 rows)

lightdb@oracle_test=# \gdesc
  Column   | Type 
-----------+------
 l_zqlbmx2 | text
(1 row)
  1. null和oracle.date
sql 复制代码
lightdb@oracle_test=# select null l_zqlbmx2 from dual
union all
select null l_zqlbmx2 from dual
union all
select sysdate l_zqlbmx from dual;
      l_zqlbmx2      
---------------------
 
 
 2024-01-26 08:23:42
(3 rows)

lightdb@oracle_test=# \gdesc
  Column   | Type 
-----------+------
 l_zqlbmx2 | text
(1 row)
  1. null和timestamp
sql 复制代码
lightdb@oracle_test=# select null l_zqlbmx2 from dual
union all
select null l_zqlbmx2 from dual
union all
select current_timestamp l_zqlbmx from dual;
           l_zqlbmx2           
-------------------------------
 
 
 2024-01-26 16:28:07.278097+08
(3 rows)

lightdb@oracle_test=# \gdesc
  Column   | Type 
-----------+------
 l_zqlbmx2 | text
(1 row)
  1. null和varchar
sql 复制代码
lightdb@oracle_test=# select null l_zqlbmx2 from dual
union all
select null l_zqlbmx2 from dual
union all
select 'hello' l_zqlbmx from dual;
 l_zqlbmx2 
-----------
 
 
 hello
(3 rows)

lightdb@oracle_test=# \gdesc
  Column   | Type 
-----------+------
 l_zqlbmx2 | text
(1 row)
相关推荐
睡不醒男孩03082312 小时前
第二篇:深入探索开源数据库高可用:构建基于CLup的PostgreSQL生产级高可用与读写分离架构
数据库·postgresql·开源·clup
Micro麦可乐14 小时前
Spring Boot 实战:从零设计一个短链系统(含完整代码与数据库设计)
数据库·spring boot·后端·哈希算法·雪花算法·短链系统
码农阿豪14 小时前
从零到一:Spring Boot快速接入金仓数据库实战
数据库·spring boot·后端
鼎讯信通15 小时前
风电光缆运维提质增效:G-4000A 光缆故障追踪仪破解风场巡检难题
运维·网络·数据库
三十..15 小时前
MySQL 从入门到高可用架构实战精要
运维·数据库·mysql
cfm_291416 小时前
Redis五大基本数据结构底层了解
数据结构·数据库·redis
真实的菜16 小时前
Redis 从入门到精通(十二):典型业务场景实战 —— 排行榜、限流器、秒杀系统、Session 共享
数据库·redis·python
你想考研啊16 小时前
mysql数据库导出导入
数据库·mysql·oracle
十年编程老舅17 小时前
Linux DRM:底层逻辑与实践架构
数据库·mysql
The Sheep 202318 小时前
Vue复习
linux·服务器·数据库