Mysql的运算符与常用函数

1. MySQL 中的运算符

1.1 算术运算符

MySQL 支持的算术运算符

运算符 作用
+ 加法
- 减法
/,DIV 除法,返回商
%,MOD 除法,返回余数

除法运算和模运算中,如果除数为0,将是非法除数,返回结果为NULL
对于模运算,还有另外一种表达方式,使用MOD(a,b)函数与a%b 效果一样。

1.2 比较运算符

MySQL 支持的比较运算符

运算符 作用
= 等于
<>或!= 不等于
<=> NULL安全的等于(NULL-safe)
< 小于
> 大于
>= 大于等于
BETWEEN 存在与指定范围
IN 存在于指定集合
IS NULL 为NULL
IS NOT NULL 不为NULL
LIKE 通配符匹配
REGEXP或RLIKE 正则表达式匹配

1.3 逻辑运算符

MySQL 中的逻辑运算符

运算符 作用
NOT或! 逻辑非
AND或&& 逻辑与
OR或 || 逻辑或
XOR 逻辑异或

1.4 位运算符

运算符 作用
& 位与(位AND)
| 位或(位OR)
^ 位异或(位 XOR)
~ 位取反
>> 位右移
<< 位左移

1.5 运算符的优先级

优先级顺序 运算符
1 :=
2 I,OR,XOR
3 &&,AND
4 NOT
5 BETWEEN,CASE,WHEN,THEN,ELSE
6 =,<>,>=,>,<=<心,l=IS,LIKE REGEXP,IN
7 \
8 &
9 <<,>>
10 -,=
11 */,DIV,%,MOD
12 ^
13 -(一元减号),~(一元比特反转)
14 !

2. 常用函数

2.1 字符串函数

MySQL 中的常用字符串函数

函数 功能
CANCAT(S1,S2...Sn) 连接S1,52..Sn为一个字符串
INSERT(str,x,y,instr) 将字符串str从第x位置开始,y个字符长的子串替换为字符串instr
LOWER(str) 将字符串str中所有字符变为小写
UPPER(Str) 将字符串str中所有字符变为大写
LEFT(Str,x) 返回字符串str最左边的x个字符
RIGHT(Str,x) 返回字符串str最右边的x个字符
LPAD(str,n,pad) 用字符串pad对str最左边进行填充,直到长度为n个字符长度
RPAD(Str,n,pad) 用字符串pad对str最右边进行填充,直到长度为n个字符长度
LTRIM(Str) 去掉字符串str左侧的空格RTRIM(Str)
REPEAT(Str,x) 返回str重复x次的结果
REPLACE(Str,a,b) 用字符串b替换字符串str中所有出现的字符串a
STRCMP(S1,52) 比较字符串s1和52
TRIM(Str) 去掉字符串行尾和行头的空格
SUBSTRING(Str,X,y) 返回从字符串strx位置起y个字符长度的字串

2.2 数值函数

MySQL 中的常用数值函数

函数 功能
ABS(x) 返回x的绝对值
CEIL(x) 返回大于x的最大整数值
FLOOR(x) 返回小于x的最大整数值
MOD(x,y) 返回x/y的模
RAND() 返回0到1内的随机值
ROUND(x,y) 返回参数x的四舍五入的有y位小数的值
TRUNCATE(x,y) 返回数字x截断为y位小数的结果

2.3 日期和时间函数

MySQL中的常用日期时间函数

函数 功能
CURDATE() 返回当前日期CURTIME()
NOW() 返回当前的日期和时间
UNIX_TIMESTAMP(date) 返回日期date的UNIX时间戳
FROM_UNIXTIME 返回UNIX时间戳的日期值
WEEK(date) 返回日期date为一年中的第几周
YEAR(date) 返回日期date的年份
HOUR(time) 返回time的小时值
MINUTE(time) 返回time的分钟值
MONTHNAME(date) 返回date的月份名
DATE_FORMAT(date,fmt) 返回按字符串fmt格式化日期date值
DATE_ADD(date,INTERVAL expr type) 返回一个日期或时间值加上一个时间间隔的时间值
DATEDIFF(expr,expr2) 返回起始时间expr和结束时间expr2之间的天数

MySQL中的日期格式

格式符 格式说明
%S,%s 两位数字形式的秒(00,01..,59)
%i 两位数字形式的分(00,01..,59)
%H 两位数字形式的小时,24小时(00,01..,23)
%h,%l 两位数字形式的小时,12小时(01,02.…12)
%k 数字形式的小时,24小时(0,1..,23)%l
%T 24小时的时间形式(hh:mm:ss)
%r 12小时的时间形式(hh:mm:ssAM或hh:mm:ssPM)
%p AM或PM
%w 一周中每一天的名称(Sunday,Monday.…,Saturday)
%a 一周中每一天名称的缩写(Sun,Mon.……Sat)
%d 两位数字表示月中的天数(00,01.,31)
%e 数字形式表示月中的天数(1,2,…,31)
%D 英文后缀表示月中的天数(1st,2nd,3rd..…)
%w 以数字形式表示周中的天数(0=Sunday,1=Monday.…,6=Saturday)
%j 以3位数字表示年中的天数(001,002.,366)
%U 周(0,1,52),其中Sunday为周中的第一天%u
%M 月名(January,February.,December)
%b 缩写的月名(January,February.…,December)
%m 两位数字表示的月份(01,02.…,12)
%c 数字表示的月份(1,2.…12)
9%Y 4位数字表示的年份
%y 两位数字表示的年份
%% 直接值“%”

MySQL 中的日期间隔类型

表达式类型 描述 格式
HOUR 小时 hh
MINUTE  
SECOND 5s
YEAR YY
MONTH 月MM  
DAY DD
YEAR_MONTH 年和月 YY-MM
DAY_HOUR 日和小时 DDhh
DAY_MINUTE 日和分钟 DDhh:mm
DAY_SECOND 日和秒 DD hh:mm:ss
HOUR_MINUTE 小时和分 hh:mm
HOUR_SECOND 小时和秒 hh:ss
MINUTE_SECOND 分钟和秒 mm:ss

2.4 流程函数

MySQL 中的流程函数

函数 功能
IF(value,t, f) 如果value是真,返回t;否则返回f
IFNULL(value1,value2) 如果value1不为空返回 value1,否则返回 value2
CASE WHEN[value1]
THEN[result1]..ELSE[defaultJEND
如果value1是真,返回result1,否则返回default
CASE[expr]WHEN[value1]
default THEN[result1]..ELSE[default]END
如果expr等于value1,返回 result1,否则返回
IF(value,t,f)函数:我们认为月薪在2000 元以上的职员属于高薪,用“high”表示;而
2000 元以下的职员属于低薪,用“low”表示。
select if(salary>2000,'high','low') from salary;

IFNULL(value1,value2)函数:这个函数一般用来替换NULL 值的,我们知道NULL 值是不
能参与数值运算的,下面这个语句就是把NULL 值用0 来替换。
select ifnull(salary,0) from salary;

CASE WHEN [value1] THEN[result1]…ELSE[default]END 函数:
select case when salary<=2000 then 'low' else 'high' end from salary;

CASE [expr] WHEN [value1] THEN[result1]…ELSE[default]END 函数:
select case salary when 1000 then 'low' when 2000 then 'mid' else 'high' end from
salary;

2.5 其他常用函数

MySQL 中的其他常用函数

函数 功能
DATABASE() 返回当前数据库名
VERSION() 返回当前数据库版本
USER() 返回当前登录用户名
INET_ATON(IP) 返回lP地址的数字表示
INET_NTOA(num) 返回数字代表的IP地址

PASSWORD(Str)返回字符串str的加密版本 MD5()|返回字符串str的MD5值

INET_ATON(IP)和INET_NTOA(num)函数主要的用途是将字符串的IP 地址转换为数字表示的网络字节序,这样可以更方便地进行IP 或者网段的比较。

你可能感兴趣的:(mysql)