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

Oracle/PostgreSQL/MSSQL/MySQL函数实现对照表

函数列表清单

函数作用OraclePOSTGRESQLMSSQLMYSQL
求字符串长度LENGTH(str)LENGTH(str)LEN(str)LENGTH(str)
字符切割SUBSTR(str,index,length)SUBSTR(str,index,length)SUBSTRING(str,index,length)SUBSTRING(str,index,length)
字符串连接str1||str2||str3...strNstr1||str2||str3...strNstr1+str2+str3...strNCONCAT(str1,str2,str3...strN)
字符串索引INSTR(str,subStr)strpos(str,subStr)CHARINDEX(subStr,str)INSTR(str,subStr)
日期格式化TO_CHAR(date,'yyyy-mm-dd hh24:mi:ss')TO_CHAR(date::timestamp,'yyyy-mm-dd hh24:mi:ss')CONVERT(VARCHAR,date,20)DATE_FORMAT(date,'%Y-%m-%d %H:%i:%s')
相等判断decode(arg[0],arg[1],arg[2],arg[3])CASE WHEN arg[0]=arg[1] THEN arg[2] ELSE arg[3] ENDCASE WHEN arg[0]=arg[1] THEN arg[2] ELSE arg[3] ENDIF(arg[0]=arg[1],arg[2],arg[3])
数字转字符TO_CHAR(num)CAST(num AS VARCHAR)CAST(num AS VARCHAR)CONVERT(num,CHAR)
判空NVL(str1,str2)COALESCE(str1,str2)ISNULL(str1,str2)IFNULL(str1,str2)
位与运算BITAND(num1, num2)num1 & num2num1 & num2num1 & num2
位或运算num1 + num2 - BITAND(num1, num2)num1 | num2num1 | num2num1 | num2
数字对应的ASCIICHR(num)CHR(num)CHAR(num)CHAR(num USING ASCII)
字符串左填充LPAD(source,padded_length,pad_string)LPAD(source,padded_length,pad_string)CONCAT(REPLICATE(pad_str, len-LEN(str)),str)LPAD(source,padded_length,pad_string)
获取当前日期SYSDATECURRENT_TIMESTAMPGETDATE()SYSDATE()
字符串两端添加逗号,||str||,,||str||,,+str+,CONCAT(',',str,',')
判断字符串是否为空str IS NULLstr=''str=''str=''
字符串转化为日期TO_DATE(str,'yyyymmdd')TO_DATE(str,'yyyymmdd')CONVERT(DATE,str,112)STR_TO_DATE(str,'%Y%m%d')
字符串转整数TO_NUMBER(str)CAST(str AS DECIMAL)CAST(str AS DECIMAL)CONVERT(str,DECIMAL)
字符串转化为日期时间TO_TIMESTAMP(dateStr||' '||timeStr,'yyyyMMdd HH24:mi:ss')TO_TIMESTAMP(...)CONVERT(DATETIME,CONCAT(CONVERT(DATE,dateStr,112),' ',timeStr),120)STR_TO_DATE(CONCAT(dateStr,' ',timeStr),'%Y%m%d %H:%i:%s')
当前日期(整型)TO_NUMBER(TO_CHAR(SYSDATE,'yyyymmdd'))CAST(TO_CHAR(CURRENT_TIMESTAMP,'yyyymmdd') AS INTEGER)CAST(CONVERT(VARCHAR,GETDATE(),112) AS INT)CONVERT(DATE_FORMAT(SYSDATE(),'%Y%m%d'),DECIMAL)
数字转化为时间间隔TRUNC(num/86400) || '天' || TRUNC(MOD(num,86400)/3600) || '小时' || TRUNC(MOD(num,3600)/60) || '分' || MOD(num,60) || '秒'同OracleCONCAT(FLOOR(num/86400),'天',FLOOR((num%86400)/3600),'小时',FLOOR((num%3600)/60),'分',num%60,'秒')CONCAT(FLOOR(num/86400),'天',FLOOR(MOD(num,86400)/3600),'小时',FLOOR(MOD(num,3600)/60),'分',MOD(num,60),'秒')
日期延后若干天args[0] + args[1]`args[0] + (args[1]’ day’)::INTERVAL`
日期延后若干月ADD_MONTHS(args[0],args[1])`args[0] + (args[1]’ month’)::INTERVAL`
判断是否不相等CASE WHEN arg[0]!=arg[1] THEN arg[2] ELSE arg[3] END同Oracle同OracleIF(arg[0]!=arg[1],arg[2],arg[3])
日期相减获取天数args[0] - args[1]EXTRACT(DAY FROM (args[0]-args[1]))DATEDIFF(DAY,args[1],args[0])DATEDIFF(args[0],args[1])
空字符串检查并赋值CASE WHEN (str1 IS NULL OR str1='') THEN str2 ELSE str1 END同Oracle同OracleIF(str1 IS NULL OR str1='', str2, str1)
判断字符串为NULL或空str IS NULL(str IS NULL OR str='')同PostgreSQL同PostgreSQL
判断字符串非NULL且非空str IS NOT NULL(str IS NOT NULL AND str!='')同PostgreSQL同PostgreSQL

相关文章:

  • SQL Server for Linux 如何实现高可用架构
  • 多模态融合相机L3CAM
  • 腾讯云TSE注册中心实战:Nacos高可用集群搭建与流量治理避坑指南
  • 如何给程序员用户画像?
  • MySQL 第十一讲---进阶篇 索引(上)
  • 【前端】⭐️通过vite构建项目
  • SQL学习笔记4
  • android zego拉插件到本地
  • MySQL之事务原理深度解析
  • Imbalanced-learn 5. Ensemble of samplers
  • Springboot整合Elasticsearch及常用方法大全
  • 鸿蒙图片相似性对比
  • dp进阶,树形背包(dfs+01)
  • 临床项目范围管理:确保项目聚焦与成功交付
  • go写前端打包的自动化工具
  • [特殊字符] Python 批量合并 Word 表格中重复单元格教程(收货记录案例实战)
  • 概率密度基本概念
  • 金蝶云星空客户端自定义控件插件-WPF实现自定义控件
  • 杭州西湖断桥不断:3D扫描还原‘残雪‘视觉骗局
  • 功率分析仪线路滤波与频率滤波的应用指南