mysql中if在oracle怎么用_MySql和Oracle的使用
本文档是一个记录文档,会不定时更新使用过程中遇到的差异问题
本文档记录MySql和Oracle在使用中要注意的问题,也包括两者使用上的差异问题
字符串拼接函数 CONCAT
MySql
MySql的 concat()函数可以拼接多个字符串,作用相当于Oracle中的||。在使用过程中要注意:在拼接多个字符串时:如果其中有null存在时,则拼接结果最终为null。所以在处理时,最好保证要拼接的所有字符串都不为null。例:
// 三字段拼接
CONCAT('T','ES','T') ----> 'TEST';
// 有NULL的情况
CONCAT('TE',null,'ST') ----> NULL
Oracle
Oracle也存在concat()函数,与MySql不同是只能进行两个字符串的连接,当有多个字符串拼接时非常的不方便。不过,不存在MySql中有null拼接返回null的问题。因为它的繁琐,所以在Oracle推荐使用||进行字符串拼接。例:
// 三字段拼接
CONCAT ( CONCAT('T', 'E'), 'ST') ----> 'TEST'
// 有NULL的情况
CONCAT ( 'TEST', null) ----> 'TEST'
NULL 处理
在查询数据的时候,有的数据会出现一些空值。如果我们要处理这些空值,将其替换为默认值,那么就会用到下面这些函数。
Mysql
MySql中,可使用的函数有 ifnull(expr1,expr2) 以及 if(expr1,expr2,expr3)。
ifnull(expr1,expr2):若 expr1 为 null,则返回 expr2
if(expr1,expr2,expr3):若表达式 expr1 成立,返回 expr2,否则返回 expr3
// ifnull 函数
ifnull('测试', '有值') -----> '有值'
ifnull(null, '无值') -----> '无值'
// if 函数
if('测试', '值1', '值2') -----> '值1'
if(null, '值1', '值2') -----> '值2'
Oracle
Oracle中,可使用的函数有 NVL(expr1,expr1) 以及 NVL2(expr1,expr2,expr3)
NVL(expr1,expr1):若 expr1 为 null,则返回 expr2
NVL2(expr1,expr2,expr3):若表达式 expr1 成立,返回 expr2,否则返回 expr3
// NVL 函数
nvl('测试', '有值') -----> '有值'
nvl(null, '无值') -----> '无值'
// NVL2 函数
nvl2('测试', '值1', '值2') -----> '值1'
nvl2(null, '值1', '值2') -----> '值2'
获取字符串长度
Mysql(5.0及以上版本)
获取字符串长度有两个函数 length(expr)、char_length(expr)
length(expr) 计算的是字符串所占的字节数。即数字和字母算一个字节,而汉字在不同的编码格式下占的字节数不同。UTF8 编码下,汉字占 3~4 个字节(一般的占3个,中日韩超大字符集的占4个),GBK编码下占 2 个字节。
char_length(expr)计算的是所占的字符数,即汉字,字母,数字都是算一个字符。
可以利用 char_length(expr) = length(expr) 来判断字符串中是否包含中文。
// UTF8 编码下
length('123456') -----> 长度为 6
char_length('123456') -----> 长度为6
length('helle世界') -----> 长度为 11
char_length('hello世界') -----> 长度为 7
Oracle
同样有两个函数 length(expr)、lengthb(expr)。不同的是 length(expr) 计算字符数,而lengthb(expr)计算字节数
// UTF8 编码下
length('123456') -----> 长度为 6
lengthb('123456') -----> 长度为6
length('hello世界') -----> 长度为 7
lengthb('helle世界') -----> 长度为 11
截取字符串
MySql
在 MySql 中常用的字符串截取函数如下:
left(str, length):从左开始。截取 length 个字符返回
right(str,length):从右开始。截取 length 个字符返回
substr(str,start,length):从左开始。以 start 为起始位,截取 length 个字符返回。(length可省略,省略情况下以 start 为起始位,返回剩余全部字符)
start 的取值可以是负值,此情况下 start 计算从右边开始
substr 函数还有其他的变种,这里不再详细描述,可自行了解
substring_index(str,delimiter,number):返回 str 中第 number 个出现的分隔符 delimiter 之前的子字符串。
当 number 是正数,计算和截取方式从左边开始算 ---> 即左为前
当 number 是负数,计算和截取方式从右边开始算 ---> 即右为前
// left
left('abcde', 2) ----> ab
// right
right('abcde', 3) ----> cde
// substr
substr('abcde', 3, 2) ----> cd
substr('abcde', 3) ----> cde
substr('abcde', -4, 3) ----> bcd
// substring_index
substring_index('a*b*c*d*e', '*', 2) -----> 'a*b'
substring_index('a*b*c*d*e', '*', -3) -----> 'c*d*e'
Oracle
Oracle 中字符串截取用到的函数有 substr 和 instr 这两个,经常一起搭配使用
substr(str, start, [length]):从 start 位置开始,截取 length 个字符组成的子串并返回。
length 是可选值。
start 可为正也可为负。当 start 为负数时,其计算从右边(末尾)开始
instr(str, child_str, [start], [show_time]):返回 child_str 子串在源串 str 中的位置
start 可选值。默认为 1,从左往右检索。为负数时,从右往左检索
show_time 可选值。子字符串在第几次出现在源字符串中。默认为 1。
// substr
substr('abcde', 3, 2) ----> cd
substr('abcde', -2, 3) ----> de 因剩余长度不足 3,所以只截取到末尾
// instr
/*
* 从左边位置 2 开始计算,返回 * 第二次出现的位置
*/
instr('a*b*c*d*e', '*', 2, 2) ----> 4
/*
* 从右边位置开始算,返回 * 第二次出现的位置
*/
instr('a*b*c*d*e', '*', -2, 2) ----> 6
// 联合运用
/**
* instr('a*b*c*d*e*f', '*', 2, 2) ----> 4
* substr('a*b*c*d*e*f', instr('a*b*c*d*e*f', '*', 2, 2), 3) ----> substr('a*b*c*d*e*f', 4, 3)
*/
substr('a*b*c*d*e*f', instr('a*b*c*d*e*f', '*', 2, 2), 3) ----> '*c*'
mysql中if在oracle怎么用_MySql和Oracle的使用相关推荐
- mysql中if在oracle怎么用_mysql和oracle的mybatis操作
1.Oracle.MySQL插入时返回下一个主键的操作 Xml代码 Oracle: SELECT SEQ_ROLE.NEXTVAL AS ID FROM DUAL insert into ROLE(I ...
- mysql中可以用to_char函数吗_mySQL中 实现Oracle 的to_char函数
mySQL中 实现Oracle 的to_char函数,应该可以实现80%的兼容 REPLACE函数是区分大小的 DROP FUNCTION IF EXISTS `to_char`; CREATE DE ...
- mysql里条件语句和循环语句_MySQL与Oracle 差异比较之四条件循环语句
循环语句 编号 类别 oracle Mysql 注释 1 IF语句使用不同 IFiv_weekly_day = 'MON'THEN ii_weekly_day := 'MON'; ELSIFiv_we ...
- mysql优于oracle的地方_MYSQL转为ORACLE要注意的地方
MYSQL转为ORACLE要注意的地方: 1.自动增长的数据类型处理 MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值.ORACLE没有自动增长的数据类型,需要建立一个自动增 ...
- mysql中 唯一约束的关键字是_mysql的约束
在mysql设计表中,有个概念叫做约束 什么是约束 约束英文:constraint 约束实际上就是表中数据的限制条件 约束种类 mysql的约束大概分为以下几种:非空约束(not null) 唯一性约 ...
- mysql+中与当前时间比较大小_Mysql中时间加减和比较大小的方法
在Oracle中使用时间函数to_date习惯了,在Oracle中时间的加减也非常简单,直接加减即可.在Mysql中时间的函数很多,非常自由. 在项目中经常用到的就是时间的加减. 比如60天前,Ora ...
- mysql 中存储引擎是什么意思_mysql常用的存储引擎是什么
mysql常用的存储引擎是什么 发布时间:2020-12-02 09:35:04 来源:亿速云 阅读:62 作者:小新 这篇文章将为大家详细讲解有关mysql常用的存储引擎是什么,小编觉得挺实用的,因 ...
- mysql 中如何删除重复的数据_mysql如何快速删除重复的数据
在mysql中去重,其实是一个很简单的事情,来看下面的例子: mysql> DROP TABLE test; Query OK, 0 rows affected (0.01 sec) mysql ...
- mysql中创建唯一索引的关键字_mysql中唯一索引的关键字是什么
mysql中唯一索引的关键字是unique index.创建唯一索引可以避免数据出现重复.唯一索引可以有多个,但索引列的值必须唯一,索引列的值允许有空值.创建唯一索引可以使用关键字UNIQUE随表一同 ...
最新文章
- BZOJ 1821 [JSOI2010] Group 部落划分 Group
- Linux-SFTP/SSH免密码登录
- bec初级第一课_在您的第一个初级开发人员工作中如何生存和发展
- 电脑任务管理器_Windows任务管理器突然打不开了
- ONNX系列三 --- 使用ONNX使PyTorch AI模型可移植
- CentOS _ RHEL 防止Kernel升级
- 为IBM 3650 M2 服务器配置RAID卡(一)
- 计算机达人成长之路(8)连载
- 如何更优雅的写for循环
- Java Proxy 动态代理原理剖析
- 分享几个手机和电脑上的百宝箱工具
- PCB----LayOut的一些准则
- 《数字图像处理》空间滤波学习感悟1:空间滤波原理
- Python修改图片分辨率来改变图片大小
- 计算几何常用的函数/方法
- 《钻哥带您了解产品原型》(Yanlz+Unity+XR+需求分析+核心思路+产品核心+生产流程+制作核心+销售核心+立钻哥哥+==)
- oracle 用户被锁住 28000 the account is locked
- 1、二进制安装k8s
- C#【汇总篇】语法糖汇总
- 摇一摇 微信 浏览器
热门文章
- SAP Spartacus打印Occ endpoint请求的url
- 使用关键字SCAN ABAP-SOURCE对ABAP源代码进行语法扫描
- 使用ABAP代码获得Netweaver环境变量
- Could not open app - SAP UI5 error message
- configurations in Gateway hub system
- When is abap.js loaded by Launchpad
- 如何获得github的oauth access token
- 如何解决SAP Structure CMST_SI_ENQ的DDIC_TYPE_INCONSISTENCY问题
- SAP CRM WebClient UI WebUI Runtime repository design
- SAP cloud platform 504 gateway time out Cloud connector