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

lightdb substr函数支持浮点类型

背景

在信创适配中,从ORACLE迁移过来的程序使用了substr函数。

LightDB 23.4版本对该函数进行了增强。支持位置参数和长度参数使用number类型。

示例

使用substr(text, numeric, numeric)函数

declare
	line varchar(300) := '312456789009876543001000.00';
	acct varchar(100);
	amt  varchar(100);
	
	pos number(10);
	len number(10);
begin
	pos = 1;
	len = 20;
	acct := substr(line, pos, len);
	pos = 21;
	len = 7;
	amt := substr(line, pos, len);
	dbms_output.put_line('acct:' || acct);
	dbms_output.put_line('amt:' || amt);
end;
/

acct:31245678900987654300
amt:1000.00
DO

create table tt_substr(pos number(10, 2), len number(10, 2));
insert into tt_substr values(0.0, 0.0);
insert into tt_substr values(-0.0, -0.0);
insert into tt_substr values(0.0, 2);
insert into tt_substr values(0.11, 2);
insert into tt_substr values(0.51, 2);
insert into tt_substr values(1.0, 2);
insert into tt_substr values(1.11, 2);
insert into tt_substr values(1.51, 2);
insert into tt_substr values(-1.0, 2);
insert into tt_substr values(-1.11, 2);
insert into tt_substr values(-1.51, 2);
insert into tt_substr values(null, null);
insert into tt_substr values(1.0, null);
insert into tt_substr values(null, 1.0);
insert into tt_substr values(1.0, 1.0);
insert into tt_substr values(1.0, 1.11);
insert into tt_substr values(1.0, 1.51);
insert into tt_substr values(1.0, -1.0);
insert into tt_substr values(1.0, -1.11);
insert into tt_substr values(1.0, -1.51);

lightdb@test_oracle=# select pos, len, substr('abcedf', pos, len) from tt_substr order by pos ASC, len asc;
  pos  |  len  | substr 
-------+-------+--------
 -1.51 |  2.00 | f
 -1.11 |  2.00 | f
 -1.00 |  2.00 | f
  0.00 |  0.00 | null
  0.00 |  0.00 | null
  0.00 |  2.00 | ab
  0.11 |  2.00 | ab
  0.51 |  2.00 | ab
  1.00 | -1.51 | null
  1.00 | -1.11 | null
  1.00 | -1.00 | null
  1.00 |  1.00 | a
  1.00 |  1.11 | a
  1.00 |  1.51 | a
  1.00 |  2.00 | ab
  1.00 |  null | null
  1.11 |  2.00 | ab
  1.51 |  2.00 | ab
  null |  1.00 | null
  null |  null | null
(20 rows)

如上所示,当位置信息和长度信息为浮点数时,小数部分是直接截掉后当做一个整数使用。同时当位置信息是0或者1时效果是等价的。


http://www.kler.cn/a/149939.html

相关文章:

  • K8资源之endpoint资源EP资源
  • Android OpenGL ES详解——立方体贴图
  • Web安全之SQL注入---基础
  • 【Java SE】接口类型
  • FFmpeg 4.3 音视频-多路H265监控录放C++开发十三:将AVFrame转换成AVPacket。视频编码原理.编码相关api
  • PHP搭建开发环境(Windows系统)
  • 基于Qt QChart和QChartView实现正弦、余弦、正切图表
  • Socket的实现过程
  • 【Python 训练营】N_11 模拟进度条
  • 【Vue】生命周期一文详解
  • WinApp自动化测试之工具的选择
  • java开发需要用到的软件,必备软件工具一览
  • Clickhouse使用总结
  • 搜索与图论算法总结
  • 基于C#实现优先队列
  • Ubuntu上的常用软件配置
  • 人工智能与供应链行业融合:预测算法的通用化与实战化
  • 如何使用ArcGIS Pro制作一张北极俯视地图
  • 初识向量数据库
  • yolov4、yolov5优化策略
  • Vue基本使用(一)
  • [Docker]九.Docker compose讲解
  • AIGC:文本生成视频
  • 【笔记】windows+pytorch:部署一下stable diffusion和NeRF
  • C++ day44完全背包问题 零钱兑换Ⅱ 组合总和Ⅳ
  • C语言基础--#if与#endif