lightdb 支持兼容Oracle的to_clob函数

文章目录

概述

在信创移植的SQL语句中,有来源于Oracle数据库的SQL语句。

在ORACLE PL/SQL包中,你可以使用TO_CLOB(character)函数将RAW、CHAR、VARCHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOB值转换为CLOB。

因此在LightDB 23.3版本中实现了对TO_CLOB函数的支持。

案例演示

环境准备

复制代码
create database test_oracle with lightdb_syntax_compatible_type  oracle;
\c test_oracle

使用TO_CLOB函数

复制代码
lightdb@test_oracle=# CREATE TABLE testorafce_to_clob (
lightdb@test_oracle(# col_char CHAR(10),
lightdb@test_oracle(# col_varchar2 VARCHAR2(20),
lightdb@test_oracle(# col_varchar VARCHAR(20),
lightdb@test_oracle(# col_nchar NCHAR(10),
lightdb@test_oracle(# col_nvarchar2 NVARCHAR2(20),
lightdb@test_oracle(# col_smallint smallint,
lightdb@test_oracle(# col_integer integer,
lightdb@test_oracle(# col_bigint bigint,
lightdb@test_oracle(# col_decimal decimal,
lightdb@test_oracle(# col_numeric numeric,
lightdb@test_oracle(# col_real real,
lightdb@test_oracle(# col_double double precision,
lightdb@test_oracle(# col_clob CLOB,
lightdb@test_oracle(# col_raw raw(10)
lightdb@test_oracle(# );
CREATE TABLE


lightdb@test_oracle=# INSERT INTO testorafce_to_clob (col_char, col_varchar2, col_varchar, col_nchar, col_nvarchar2, col_smallint, col_integer, col_bigint, col_decimal, col_numeric, col_real, col_double, col_clob, col_raw)
lightdb@test_oracle-# VALUES ('ABC1', 'Hello', 'world', N'中文', N'こんにちは', 1, 2, 3, 4, 5, 6, 7, 'This is a CLOB', 'AB');
INSERT 0 1
lightdb@test_oracle=# INSERT INTO testorafce_to_clob (col_char, col_varchar2, col_varchar, col_nchar, col_nvarchar2, col_smallint, col_integer, col_bigint, col_decimal, col_numeric, col_real, col_double, col_clob, col_raw)
lightdb@test_oracle-# VALUES ('ABC2', 'Hello', 'world', N'中文', N'こんにちは', 1, 2, 3, 4, 5, 6, 7, 'This is a CLOB', '1');
INSERT 0 1
lightdb@test_oracle=# INSERT INTO testorafce_to_clob (col_char, col_varchar2, col_varchar, col_nchar, col_nvarchar2, col_smallint, col_integer, col_bigint, col_decimal, col_numeric, col_real, col_double, col_clob, col_raw)
lightdb@test_oracle-# VALUES ('ABC3', 'Hello', 'world', N'中文', N'こんにちは', 1, 2, 3, 4, 5, 6, 7, oracle.to_clob('This is a CLOB'), '1AB456789');
INSERT 0 1


lightdb@test_oracle=# SELECT  oracle.to_clob(col_char) AS clob_char,
lightdb@test_oracle-# oracle.to_clob(col_varchar2) AS clob_varchar2,
lightdb@test_oracle-# oracle.to_clob(col_varchar) AS col_varchar,
lightdb@test_oracle-# oracle.to_clob(col_nchar) AS clob_nchar,
lightdb@test_oracle-# oracle.to_clob(col_nvarchar2) AS clob_nvarchar2,
lightdb@test_oracle-# oracle.to_clob(col_clob) AS clob_clob,
lightdb@test_oracle-# oracle.to_clob(col_smallint) AS col_smallint,
lightdb@test_oracle-# oracle.to_clob(col_integer) AS col_integer,
lightdb@test_oracle-# oracle.to_clob(col_bigint) AS col_bigint,
lightdb@test_oracle-# oracle.to_clob(col_decimal) AS col_decimal,
lightdb@test_oracle-# oracle.to_clob(col_numeric) AS col_numeric,
lightdb@test_oracle-# oracle.to_clob(col_real) AS col_real,
lightdb@test_oracle-# oracle.to_clob(col_double) AS col_double,
lightdb@test_oracle-# oracle.to_clob(col_raw) AS clob_nclob
lightdb@test_oracle-# FROM testorafce_to_clob order by col_char asc;
 clob_char  | clob_varchar2 | col_varchar |  clob_nchar  | clob_nvarchar2 |   clob_clob    | col_smallint | col_integer | col_bigint | col_decimal | col_numeric | col_real | col_double | clob_nclob 
------------+---------------+-------------+--------------+----------------+----------------+--------------+-------------+------------+-------------+-------------+----------+------------+------------
 ABC1       | Hello         | world       | 中文         | こんにちは     | This is a CLOB | 1            | 2           | 3          | 4           | 5           | 6        | 7          | AB
 ABC2       | Hello         | world       | 中文         | こんにちは     | This is a CLOB | 1            | 2           | 3          | 4           | 5           | 6        | 7          | 01
 ABC3       | Hello         | world       | 中文         | こんにちは     | This is a CLOB | 1            | 2           | 3          | 4           | 5           | 6        | 7          | 01AB456789
(3 rows)

可以看出,在Oracle兼容模式下LightDB 23.3版本TO_CLOB函数支持了CLOB、字符型以及数值型到CLOB类型的转换。

相关推荐
煎蛋学姐4 分钟前
SSM基于框架在线电影评论投票系统3gr0f(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·系统开发·ssm 框架·在线电影评论投票系统
꒰ঌ 安卓开发໒꒱11 分钟前
Go高并发在企业级项目中的实战应用:数据库访问与GIN+GORM深度实践
数据库·golang·gin
半夏知半秋21 分钟前
mongodb的复制集整理
服务器·开发语言·数据库·后端·学习·mongodb
程序员柳1 小时前
基于深度学习技术实现染色质开放区域的预测与分析系统源代码+数据库,采用Flask + Vue3 实现前后端分离的植物染色质可及性预测系统
数据库·深度学习·flask
苦学编程的谢1 小时前
Redis_3_Redis介绍+常见命令
数据库·redis·github
JavaEdge.1 小时前
榨干 CPU 性能:通过绑核将 Redis 尾延迟减半!
数据库·redis·缓存
YDS8291 小时前
Redis入门 —— 基本数据类型和Spring Data Redis
数据库·redis·spring
一个儒雅随和的男子1 小时前
Redis大Key调优指针
数据库·redis·缓存
IT 小阿姨(数据库)1 小时前
PostgreSQL pg_stat_bgwriter 视图各个字段详解
linux·数据库·sql·postgresql·centos
王卫东3 小时前
深入HBase:原理剖析与优化实战
大数据·数据库·hbase