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

发布于:2025-07-04 ⋅ 阅读:(22) ⋅ 点赞:(0)

函数列表清单

函数作用 Oracle POSTGRESQL MSSQL MYSQL
求字符串长度 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...strN str1||str2||str3...strN str1+str2+str3...strN CONCAT(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] END CASE WHEN arg[0]=arg[1] THEN arg[2] ELSE arg[3] END IF(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 & num2 num1 & num2 num1 & num2
位或运算 num1 + num2 - BITAND(num1, num2) num1 | num2 num1 | num2 num1 | num2
数字对应的ASCII CHR(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)
获取当前日期 SYSDATE CURRENT_TIMESTAMP GETDATE() SYSDATE()
字符串两端添加逗号 ,||str||, ,||str||, ,+str+, CONCAT(',',str,',')
判断字符串是否为空 str IS NULL str='' 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) || '秒' 同Oracle CONCAT(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 同Oracle IF(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 同Oracle IF(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