首页 > 数据库 >oracle数据库SQL函数替换成mysql中的函数

oracle数据库SQL函数替换成mysql中的函数

时间:2025-01-02 17:09:33浏览次数:1  
标签:函数 截取 SQL 替换成 字符串 dual mysql oracle

mysql:

and device_type like CONCAT('%', #{deviceType}, '%')

oracle:

and device_type like '%' || #{deviceType} || '%'

---------------------------------------------------------------------------
oracle:
####时间转字符串
to_char(t.CREATE_DATETIME,'yyyy-MM-dd HH24:MI:ss')
####字符串转日期格式
to_date(t.CREATE_DATETIME,'yyyy-MM-dd HH24:MI:ss')

mysql:

####时间转字符串(指定格式)
DATE_FORMAT(t.CREATE_DATETIME,'%Y-%m-%d %H:%i:%s')
####字符串转日期格式
str_to_date(t.CREATE_DATETIME,'%Y-%m-%d %H:%i:%s')
-----------------------------------------------------------------------------
oracle:

decode函数:
DECODE函数将比较'Age'列的值与13,14,15 ..并返回适当的字符串值'Thirteen','Fourteen'..如果它与没有匹配,则返回默认值'Adult' .

Select Name, DECODE(Age,
       13,'Thirteen',14,'Fourteen',15,'Fifteen',16,'Sixteen',
       17,'Seventeen',18,'Eighteen',19,'Nineteen',
       'Adult') AS AgeBracket
FROM Person

mysql:

select if(emp_id=1,'X','Y') as test
select if(t.id is null,'X','Y') as test

这只适用于布尔表达式,而不是像`DECODE()`那样的任意长度情况.

Select Name,
       CASE Age
         when 13 then 'Thirteen'
         when 14 then 'Fourteen'
         when 15 then 'Fifteen'
         when 16 then 'Sixteen'
         when 17 then 'Seventeen'
         when 18 then 'Eighteen'
         when 19 then 'Nineteen'
         else         'Adult'
       END AS AgeBracket

--------------------------------------------------------------------------------------


oracle:

select e.deptno,Listagg(e.ename,',') 
within group (order by e.CREATE_DATETIME) as name 
from emp e  group by e.deptno

mysql:
####默认使用,号分隔
SELECT e.deptno,group_concat(e.ename) as name  FROM emp e  group by e.deptno

####使用其他符号分隔
SELECT e.deptno,group_concat(e.ename,'|') as name  FROM emp e  group by e.deptno

-----------------------------------------------------------------------------------------

oracle:

nvl 函数 nvl(expr1,expr2)
如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数不为空,则显示第一个参数的值

mysql:

IFNULL函数 IFNULL(expr1,expr2)
如果mysql第一个参数为空那么显示第二个参数的值,如果第一个参数不为空,则显示第一个参数的值


---------------------------------------------------------------------------------------------

oracle:

TO_NUMBER
to_number() 把 string 转换成 numeric
TO_CHAR(): 


mysql:
cast ( 11 as unsigned int) 整型
cast ( 11 as decimal(10,2)) 浮点型
CAST(123   AS   VARCHAR)
-----------------------------------------------------------------------------------------------

oracle:
系统时间 
sysdate

mysql:
now()

####mysql使用mybatis中转义符
<![CDATA[ >]]>

--------------------------------------------------------------------------------------------------

oracle:

lpad函数,在字符串的左侧添加指定字符串,用法:

lpad(String ,截取长度,添加的字符串)。

说是添加字符串也不准确,比较准确的说法是对String进行截取字符串,如果截取长度大于String的长度,则在

String的左侧添加字符串进行填补,如果第三个参数未指定,则用空格进行填补。例如:

select lpad('test',10) from dual;

将返回“ test”

select lpad('test',10,'ee') from dual;

结果将返回eeeeeetest。

mysql:
####mysql中可以直接使用该函数
select lpad(COUNT(1), 2, 0) from BD_PERIOD_MANAGE BPM where (BPM.DEL_FLAG='N' or BPM.DEL_FLAG is null)

---------------------------------------------------------------------------------------------------------

oracle:
字符串拼接
t.DEVICE_NAME || '(' || t.RUN_NUM || ')' as DEVICE_NAME2

mysql:

concat(t.DEVICE_NAME,'(',t.RUN_NUM,')') as DEVICE_NAME2

----------------------------------------------------------------------------------------------------------

oracle:
add_months()函数
SELECT add_months(SYSDATE,1) from dual; 查询结果 2017/11/12 10:15:18

mysql:
ADDDATE()函数
SELECT ADDDATE(NOW(), INTERVAL 1 MONTH); 查询结果 2017-11-12 10:15:18


------------------------------------------------------------------------------------------------------------

oracle:
递归查询:
select DEPT_ID FROM SYS_DEPT start with DEPT_ID = 'd821ea21c4ea46e28d61DCEGd78f0026' connect by prior DEPT_ID = FID

mysql:
mysql实现递归需要创建函数,再实现,改成直接使用java实现递归然后传参数进来

--------------------------------------------------------------------------------------------------------------

oracle:

(1)substr(expr1,expr2)

expr1指要截取的字符串,expr2指截取字符串开始的位置,默认截取到最后,包含开始位置。

(2)substr(expr1,expr2,expr3)

expr1指要截取的字符串,expr2指截取字符串开始的位置,expr3指截取字符串的长度。

mysql:

substr()和substring()

-------------------------------------------------------------------------------------------------------------------

oracle:

rownum

mysql:

limit

----------------------------------------------------------------------------------------------------------------------

oracle:
ceil()函数 取整 ( 大 )

mysql:
ceiling()函数  取整 ( 大 )

----------------------------------------------------------------------------------------------------------------------
oracle:

extract()函数
Select extract(year from sysdate) year ,extract(month from sysdate) month,extract(day from sysdate) day from dual;

结果:

Year 2019

Month 4

Day 17

mysql同用

----------------------------------------------------------------------------------------------------------------------------

Oracle的trunc函数与MySQL(Maria)的truncate函数都可以对数值进行截取操作,但是Oracle的trunc函数还可以对日期进行截取操作。

对数值进行截取操作两者功能是一样的。

在针对日期的操作中,MySQL的truncate函数无此功能(可以使用date_format函数)

-- 等同于Oracle的trunc函数。作用是对日期或数值进行截取操作
-- 首先看对数值进行截取操作
SELECT TRUNCATE(122.123, 4) from dual;     # 122.123
SELECT TRUNCATE(122.123, 3) from dual;     # 122.123
SELECT TRUNCATE(122.123, 2) from dual;     # 122.12
SELECT TRUNCATE(122.123, 1) from dual;     # 122.1
SELECT TRUNCATE(122.123, 0) from dual;     # 122
SELECT TRUNCATE(122.123, -1) from dual; # 120
SELECT TRUNCATE(122.123, -2) from dual; # 100
SELECT TRUNCATE(122.123, -3) from dual; # 0
SELECT TRUNCATE(122.123, -4) from dual; # 0

----------------------------------------------------------------------------------------------------------------------------------

 

标签:函数,截取,SQL,替换成,字符串,dual,mysql,oracle
From: https://www.cnblogs.com/huangfeifei/p/18648289

相关文章

  • SQL Prompt 激活后重启需要再次激活
    禁止SQLPrompt联网,再hosts文件中添加 #SQLprompt防止联网127.0.0.1licensing.red-gate.com127.0.0.1www.red-gate.com127.0.0.1red-gate.com127.0.0.1productusage.red-gate.com127.0.0.1productlogin.red-gate.com127.0.0.1featureusage.com 127.0.0.1www.redgate......
  • opencv中标定函数
    calibrateCamera在OpenCV中,calibrateCamera函数用于进行相机标定,估计相机的内参和外参。相机标定的目的是确定相机在三维空间中的位置和方向,以及其光学特性。函数原型doublecv::calibrateCamera(conststd::vector<std::vector<cv::Point3f>>&objectPoints,cons......
  • 记录一次SQL慢查询优化
    作者:京东物流赫占星一、慢SqL发现在一次需求UAT上线后,本来在测试环境没问题的接口,UAT环境出现了接口超时,通过查询接口日志发现是SQL查询超时了,原因是UAT环境的数据量比测试环境大得多。一般来说,我们可以通过数据库本身的慢查询日志去定位出问题的慢SQL,但是对于京东,易维平台为......
  • opencv的亚像素角点检测函数cornerSubPix
    在OpenCV中,cornerSubPix函数用于对角点的亚像素精确化。这个函数可以提高角点检测的精度,通常在角点检测之后使用,如在Harris或Shi-Tomasi角点检测之后。函数原型voidcv::cornerSubPix(InputArrayimage,InputOutputArraycorners,SizewinSize,Size......
  • 深入理解 Python 的 eval() 函数与空全局字典 {}
    目录一、eval()函数基础二、全局字典{}的作用案例1:无全局字典案例2:空全局字典三、为什么使用空全局字典{}可能不安全?案例3:绕过空全局字典的限制四、更安全地使用eval()五、替代方案六、总结在Python编程中,eval()函数是一个强大但常被误解的工具。它能够将......
  • Arduino串口输出函数print()和write()的联系和区别
    write()传送的是ASCII的十进制的值(如65),而print()传送的是ASCII的文本(如A)1、当参数是字符串时,两者效果相同。因为write()先把字符文本转换成ASCII值,然后转译成ASCII文本,故与print()的效果相同例如:print("abc")和write("abc")都输出:abc       print("123......
  • 浅谈以 Oracle 为基准,GaussDB、达梦数据库(DM)和 PostgreSQL 的差异以及信创前景
    随着国内信息技术的快速发展,尤其是在“信息技术自主可控”(即信创)政策的推动下,国内企业和政府部门逐渐对数据库技术提出了自主可控的需求。尤其在数据库领域,国产数据库技术的崛起,正逐步替代传统的国际主流数据库系统(如Oracle等),成为我国数字化转型和数据安全战略中的关键一环。本......
  • Cause: java.sql.SQLDataException: ORA-01841: (完整) 年份值必须介于 -4713 和 +999
    报错信息:###Theerrormayexistinfile[E:\IdeaProjects\FeiShuEHR\target\classes\mapper\ZzzHrOaQingJiaMapper.xml]###TheerrormayinvolvedefaultParameterMap###Theerroroccurredwhilesettingparameters###SQL:SELECTDANHAO,A0190,LEAVE_TYPEI......
  • mysql5.5安装
    回忆一下mysql5.5安装配置方法,整理mysql5.5安装配置教程笔记,分享给大家。MySQL下载地址:http://dev.mysql.com/downloads/installer/1、首先进入的是安装引导界面2、然后进入的是类型选择界面,这里有3个类型:Typical(典型)、Complete(完全)、Custom(自定义)。这里建议 选择“自定......
  • 使用库函数 API 和 C 代码中嵌入汇编代码两种方式使用同一个系统调用
    实验四使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用实验内容选择一个系统调用(13号系统调用time除外),系统调用列表参见torvalds/linux。参考视频中的方式使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用实验过程使用库函数API#......