求字符串长度 |
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 |