Oracle存储过程转Mysql存储过程
函数转换
Oracle | Mysql |
---|---|
sysdate | now() |
sysdate | sysdate() |
nvl() | ifNull() |
||(字符串连接) | concat() |
LENGTH() | LENGTH() |
substr() | SUBSTRING() |
decode() | (case when then else end) |
MySQL函数
(CASE WHEN … THEN … ELSE … END)
在SQL语句中,"CASE WHEN … THEN … ELSE … END"是较常见的用来判断的语句,适用于增删改查各类语句中,公式如下:
CASE expression
WHEN if_true_expr THEN return_value1
WHEN if_true_expr THEN return_value2
WHEN if_true_expr THEN return_value3
……
ELSE default_return_value
END
判断null值处理
# 错误方法:
CASE columnName WHEN null THEN 0 ELSE columnName END
# 正确方法 建议用ifnull()函数处理
CASE WHEN columnName is null THEN 0 ELSE columnName END
IF(expr,if_true_expr,if_false_expr)
在mysql中if()函数的用法类似于java中的三目表达式,具体语法如下:
IF(expr,if_true_expr,if_false_expr)
如果expr的值为true,则返回if_true_expr的值,如果expr的值为false,则返回if_false_expr的值。
类型转换函数
cast(value as type)
convert(value,type)
# 字符串转整形: convert('',SIGNED)
# 整形转字符串: convert('',char)
# 建议用convert() 比较方便
type的类型
- 整数 : SIGNED
- 无符号整数 : UNSIGNED
- 二进制,同带binary前缀的效果 : BINARY
- 字符型,可带参数 : CHAR()
- 日期 : DATE
- 时间: TIME
- 日期时间型 : DATETIME
- 浮点数 : DECIMAL
日期格式化函数
date_format(NOW(), '%Y%m%d') # 年月日
date_format(NOW(), '%H:%i:%s') # 时分秒