人大金仓与mysql的差异与替换

  1. 人大金仓中不能使用~下面的符号,字段中使用”,无法识别`
  2. 建表语句
    创建表时语句中只定义字段名.字段类型.是否是否为空
    Varchar类型改为varchar(长度 char)
    Int(0) 类型为int4
    定义主键:CONSTRAINT 键名 主键类型(主键字段)
    添加列注释:
    COMMENT ON COLUMN “模式”.”表名”.”字段名” IS ‘注释’
    如下:
DROP TABLE IF EXISTS "se_tools_library_catalog";
CREATE TABLE "se_tools_library_catalog"  ("ID" varchar(100 char)  NOT NULL,"CATALOG_NAME" text  NULL ,"EXPLAIN" text  NULL,"PARENT_ID" varchar(100 char)  NULL,"ORDERNUMBER" decimal(65, 30) NULL,"TAG" int4 NULL,CONSTRAINT "se_tools_library_catalog_constraint_1" PRIMARY KEY ("ID")
);
COMMENT ON COLUMN "public"."se_tools_library_catalog"."ID" IS '数据id';
COMMENT ON COLUMN "public"."se_tools_library_catalog"."CATALOG_NAME" IS '分类夹名称/工具名称';
COMMENT ON COLUMN "public"."se_tools_library_catalog"."EXPLAIN" IS '关联父id';
COMMENT ON COLUMN "public"."se_tools_library_catalog"."PARENT_ID" IS '下载时间';
COMMENT ON COLUMN "public"."se_tools_library_catalog"."ORDERNUMBER" IS '排序字段';
COMMENT ON COLUMN "public"."se_tools_library_catalog"."TAG" IS '标识字段分类夹/工具';
COMMENT ON TABLE "public"."se_tools_library_catalog" IS '工具库文件夹分类';

3.string_agg替代GROUP_CONCAT
人大金仓无法使用GROUP_CONCAT函数,由String_agg(字段名,分隔符)替代,分隔符不可省略
若要使用多字段合并使用|| ’ '||分隔字段
如:

select string_agg(name || ''||version,',') from se_pro_config_development where project_id='4MBRH4NKTUKG' and type='1' and version is not null

在这里插入图片描述

4.计算时间差,字符串需转换日期型计算
人大金仓计算时间差,如果是字符串类型数据不能直接相减,使用Date转型
如下:
Mysql:

select (s1.plan_end_time-s1.plan_start_time)+1 as TIMES from se_task_import s1

人大金仓:

select Date(s1.plan_end_time)-Date(s1.plan_start_time)+1  as TIMES from se_task_import s1

5.to_number函数
(1)使用to_number去转换一个long型字段,会造成
com.kingbase8.util.KSQLException: 错误: 值 “3059376192540000” 超出类型 integer 的范围
(2)若字段值中是小数,不可使用to_number函数转换数字型,使用+0.0
在这里插入图片描述
在这里插入图片描述

6.数据库大小写
当前数据库使用的是大小写敏感,所有列名转换为大写,请注意实体类中使用字段名小写或者大写,勿使用大写小混杂,否则无法识别
7.NLSSORT函数
人大金仓数据库无法使用NLSSORT函数
8.group by
人大金仓group by语句比mysql更严格,使用group By 后select查询的字段必须在group by中使用,人大金仓使用的group by的查询结果只包含聚合函数及分组字段
Mysql:

select count(*),name from test group by type

人大金仓:

select count(*),name from test group by type,name

9.日期类型转换
人大金仓中日期转换无法使用DATE_FORMAT,与oracle 一致使用to_date,to_char用于日期和字符串转换
10.列名格式
人大金仓数据库中新增数据,列名不可使用’,必须使用”
格式如下:

INSERT INTO "public"."se_check_org_item"
("id", "checklist_id", "parent_id", "check_item", "description", "item_type", "row_sort_order", "create_time", "creator", "cut_flag")
VALUES('', '', '', '', '', 0, 0, '', '', '');

11.locate函数替代
MySql 中的 LOCATE 函数判断 字符串在另一个字符串中出现的位置, 用 strpos 函数替换
如:select * from SE_PRO_CONFIG_DEVELOPMENT where strpos('root',parent_id)=0;
12.索引
KingBase ES V8R6支持的索引类型如下:

  • B-tree索引

B-tree索引是Kingbase ES的默认索引,内部采用的B+树( N叉排序树)实现,由于树状结构每一层节点都有序列,因此非常适合用来做范围查询和优化排序操作。B-tree索引支持的操作符有 >, <, >=, <=, =, IN, LIKE等,同时,优化器也会优先选择B-tree索引来对ORDER BY.MIN.MAX.MERGE JOIN进行有序操作。
使用示例:

create index i_btree on tab_btree using btree(id);
explain analyze select * from tab_btree where id < 10;  --有btree索引     
  • 2.Hash索引

HASH索引查询效率比BTREE高得多,相比BTREE索引需要从根节点查询到叶子节点,且需要多次IO及CPU操作,HASH索引因其索引结构的特殊性,理想情况下仅需一次检索即可定位到数据。
与此同时,HASH也存在一定的局限性,只适合做等值查询。由于HASH索引是通过比较哈希值来做定位,因此当查询列上有较大比例的重复值时,会带来严重的哈希冲突,进而影响查询速度,这种情况下就不建议使用HASH索引。
使用示例:

create index i_hash on tab_hash using hash(id);
explain analyze select * from tab_hash where id < 10; --HASH索引不支持非等值操作
  • 3.GiST索引

GIST意为通用搜索树,是一种平衡的.树状结构的访问方法。GIST索引适用于多维数据类型和集合数据类型,可以用来做位置搜索,如包含.相交.左边.右边等。
使用示例:

create index i_gist on tab_gist using gist(po);
explain analyze select * from tab_gist where po << point(100,100); --查询po列上在(100,100)左边的点

4.SP-GiST索引
SP-GiST是“空间分区GiST”的简称。SP-GiST支持分区搜索树,它可用于开发各种不同的非平衡数据结构索引,如四叉树.k-d树和radix树。这些数据结构的共同点是:它们反复地将搜索空间划分成大小不等的分区。与GiST索引类似,SP-GiST可作为一种基础模板来实现多种搜索方法。
使用示例:

create index i_spgist on tab_spgist using spgist(location);
explain analyze select * from tab_spgist where location~=point100,999;
  • 5.GIN索引

GIN是倒排索引,主要适用于包含多个组合值的查询,如数组.全文检索等。
使用示例:

  • create index i_gin on tab_gin using gin(to_tsvector(‘english’,
    info)); analyze; explain analyze select * from tab_gin where
    to_tsvector(‘english’, info) @@ plainto_tsquery( ‘hello’);
    –使用GIN索引的全文检索

14.on duplicate key update 替代
on duplicate key update 由 ON CONFLICT(key) do update set 替代,该方法用于批量插入时,若主键已存在则更新指定字段
Mysql:

insert into se_task_plan_template  (id,plan_start_time,plan_end_time)  values   ('4P0OOXCDSA9S','2023-06-21','2023-06-21' ), ('4P016ZXT5M2O_4E3D3KHDI96O_cut_resolve','2023-06-21','2023-07-12' )on duplicate key update plan_start_time=values(plan_start_time),plan_end_time=values(plan_end_time) ;

kingbase:

insert into se_task_plan_template   (id,plan_start_time,plan_end_time)  values   ( '4P0OOXCDSA9S','2023-06-21','2023-06-21' ), ( '4P016ZXT5M2O_4E3D3KHDI96O_cut_resolve','2023-06-21','2023-07-12' )
ON CONFLICT(id) do update set plan_start_time=EXCLUDED.plan_start_time, plan_end_time= se_task_plan_template.plan_end_time ;

注意:
ON CONFLICT(key) 此处的key必须是主键,未设置主键会报错
SQL 错误 [42P10]: 错误: 没有匹配ON CONFLICT说明的唯一或者排除约束 com.kingbase8.util.KSQLException: 错误: 没有匹配ON CONFLICT说明的唯一或者排除约束
若使用语句中值,如下:
EXCLUDED.字段名
若使用原表的某个字段值,如下:
se_task_plan_template.字段名
15.查询列别名中文格式
人大金仓中若需定义中文别名,使用双引号

select name "名称" from se_project

在这里插入图片描述

16、 kingbase不能查询空字符(‘’)解决方法:ora_input_emptystr_isnull修改为off
在这里插入图片描述

17、 转换字符串为数字类型+0.0 to_number报错也可直接+0.0或者+0即可

SELECT sum(nvl(if(ACTUAL_LIMIT_TIME='','0',ACTUAL_LIMIT_TIME),'0')+0.0) actualLimitTime,
sum(nvl(if(ACTUAL_WORK='','0',ACTUAL_WORK),'0')+0.0) actualWork  FROM SE_TASK_PLAN_TEMPLATE where PROJECT_ID ='47GHCWMQJ4LC' and TASK_MODEL in('qaManageCycle','qaManage') 

18、mysql中的year函数用to_char(时间,’yyyy’).quarter函数用(to_char(时间,’mm’)+2)/3
19、 Yeakweek()函数用to_char(时间,’yyyyiw’)
20、 update联查更新报错问题 update 表 inner join 不支持,left join也不支持。需修改为where条件,类似下图修改即可1改为2
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/496556.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js中浏览器渲染原理

JavaScript&#xff08;JS&#xff09;是一种广泛使用的编程语言&#xff0c;特别是在Web开发中。在浏览器中&#xff0c;JS被用于实现动态网页效果、交互性和用户体验的提升。然而&#xff0c;要理解JS在浏览器中的工作原理&#xff0c;我们首先需要了解浏览器的渲染过程。 浏…

上位机图像处理和嵌入式模块部署(当前机器视觉新形态)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 过去的机器视觉处理&#xff0c;大部分都是集中在上位机、或者是服务器领域&#xff0c;这种形式维持了很长的时间。这种业务形态下&#xff0c;无…

《无菌药品生产污染控制策略(CCS)技术指南》之环境监测详解

近日&#xff0c;为不断提高无菌药品制造水平&#xff0c;保障公众健康&#xff0c;探讨符合国内行业产业实际的CCS执行方式&#xff0c;中国医药设备工程协会&#xff08;CPAPE&#xff09;在2024年2月27日正式批准发布《无菌药品生产污染控制策略&#xff08;CCS&#xff09;…

Socket网络编程(二)——UDP快速入门

目录 UDP相关概念UDP是什么为什么不可靠UDP能做什么UDP包最大长度 UDP单播、广播、多播概念1. 单播、广播、多播模型图2. ip地址分类3. 子网掩码的作用&#xff1a;4. 广播地址5. 网段划分6. 变长子网掩码 UDP核心APIAPI-DatagramSocketApi方法&#xff08;构造方法&#xff09…

nginx实现http反向代理及负载均衡

目录 一、代理概述 1、代理概念 1.1 正向代理&#xff08;Forward Proxy&#xff09; 1.2 反向代理&#xff08;Reverse Proxy&#xff09; 1.3 正向代理与反向代理的区别 2、同构代理与异构代理 2.1 同构代理 2.2 异构代理 2.3 同构代理与异构代理的区别 二、四层代…

计算机网络-网络互连和互联网(四)

1.TCP协议&#xff1a; 传输控制协议&#xff0c;面向字节流按顺序连接&#xff0c;可靠&#xff0c;全双工&#xff0c;可变滑动窗口&#xff0c;缓冲累积传送。协议号为6。下面是TCP段&#xff08;段头&#xff09;&#xff0c;TCP头&#xff08;传输头&#xff09;&#xf…

探索AI视频模型的无限可能:OpenAI的Sora引领创新浪潮

文章目录 &#x1f4d1;前言一、技术解析二、应用场景三、未来展望四、伦理与创意五、用户体验与互动&#x1f324;️总结 &#x1f4d1;前言 随着人工智能技术的蓬勃发展&#xff0c;AI视频模型正逐渐成为科技领域的新宠。在这个变革的浪潮中&#xff0c;OpenAI推出的首个AI视…

【C++那些事儿】深入理解C++类与对象:从概念到实践(上)| 揭开this指针的神秘面纱

&#x1f4f7; 江池俊&#xff1a; 个人主页 &#x1f525;个人专栏&#xff1a; ✅数据结构冒险记 ✅C那些事儿 &#x1f305; 有航道的人&#xff0c;再渺小也不会迷途。 文章目录 1. 面向过程和面向对象初步认识2.类的引入3.类的定义4.类的访问限定符及封装4.1 访问限定符…

使用 kubeadm 部署k8s集群

一、所有节点系统初始化 1、常规初始化 2、内核版本升级以及内核限制文件参数修改 还可以考虑将旧版本的内核卸载 二、准备nginx负载均衡器和keepalived nginx四层代理&#xff1a; keepalived配置&#xff1a; nginx检测脚本&#xff1a; 三、所有节点部署docker&#xff0c…

接口测试实战--mock测试、日志模块

一、mock测试 在前后端分离项目中,当后端工程师还没有完成接口开发的时候,前端开发工程师利用Mock技术,自己用mock技术先调用一个虚拟的接口,模拟接口返回的数据,来完成前端页面的开发。 接口测试和前端开发有一个共同点,就是都需要用到后端工程师提供的接口。所以,当…

记一次生产jvm oom问题

前言 jvm添加以下参数&#xff0c;发生OOM时自动导出内存溢出文件 -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath/opt 内存分析工具&#xff1a; MAT, 下载地址&#xff1a;Eclipse Memory Analyzer Open Source Project | The Eclipse Foundation&#xff0c; 注意工具地址…

新款极氪001“卷”疯了,加量不加价友商都别活了

文 | AUTO芯球 作者 | 雷歌 我惊呆了朋友们。 昨晚的极氪001新款发布会我全程在看&#xff0c;上个厕所都没舍得挪窝&#xff0c;生怕错过了新车爆点。 要不是极氪CEO安聪慧曝光&#xff0c;极氪001这个隐形的王者&#xff0c;还完全隐没在你我的视野里。 什么秘密呢&…