MySQL 支持的算术运算符
运算符
运算符 | 作用 |
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法,返回商 被除数为0返回null |
%,MOD | 除法,返回余数 被除数为0返回null |
select 3%5;
等效于:
select mod(3,5);
比较符
运算符 | 作用 |
= | 等于 |
<>或!= | 不等于 |
<=> | 与=效果相同,区别是null=null返回null null《=》null返回1 |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
BETWEEN | 存在与指定范围 |
IN | 存在于指定集合 |
IS NULL | 为 NULL |
IS NOT NULL | 不为 NULL |
LIKE | 通配符匹配 |
REGEXP 或 RLIKE | 正则表达式匹配 |
正确返回1,错误返回0;
逻辑运算符
表 4-3 MySQL 中的逻辑运算符运算符 | 作用 |
NOT 或! | 逻辑非 |
AND 或&& | 逻辑与 |
OR 或 || | 逻辑或 |
XOR | 逻辑异或 即false xor true 返回1 |
除了逻辑或 其他的只要有null都返回null, 1||null 返回1,null||null返回null,
位运算符
转换为二进制在进行运算,前三个需要两个参数,后面只需要一个参数
运算符 | 作用 |
& | 位与(位 AND) |
| | 位或 (位 OR ) |
^ | 位异或(位 XOR) |
~ | 位取反 |
>> | 位右移 高位自动补0 |
<< | 位左移 地位补0 |
常用函数
字符串函数
函数 | 功能 |
CANCAT(S1,S2,…Sn) | 连接 S1,S2,…Sn 为一个字符串 |
INSERT(str,x,y,instr) | 将字符串 str 从第 x 位置开始,y 个字符长的子串替换为字符串 instr INSERT(abc,1,2,4)= 4c |
LOWER(str) | 将字符串 str 中所有字符变为小写 |
UPPER(str) | 将字符串 str 中所有字符变为大写 |
LEFT(str ,x) | 返回字符串 str 最左边的 x 个字符 left(abc,2)=ab |
RIGHT(str,x) | 返回字符串 str 最右边的 x 个字符 right(abc,2)=bc; |
LPAD(str,n ,pad) | 用字符串 pad 对 str 最左边进行填充,直到长度为 n 个字符长度 从左边开始填充 pad 直到长度达到 n lpad(ac,123,10)=12312312ac |
RPAD(str,n,pad) | 用字符串 pad 对 str 最右边进行填充,直到长度为 n 个字符长度 与lpad相似,只是是从右边开始 rpad(ac,123,10)=ac12312312 |
LTRIM(str) | 去掉字符串 str 左侧的空格 |
RTRIM(str) | 去掉字符串 str 行尾的空格 |
REPEAT(str,x) | 返回 str 重复 x 次的结果 repeat(ab,3)=ababab |
REPLACE(str,a,b) | 用字符串 b 替换字符串 str 中所有出现的字符串 a replace(abcabcac,abc,3)=3ac |
STRCMP(s1,s2) | 比较字符串 s1 和 s2的ASCII 码,s1>s2 返回1 |
TRIM(str) | 去掉字符串行尾和行头的空格 |
SUBSTRING(str,x,y) | 返回从字符串 str x 位置起 y 个字符长度的字串 substring(abc,2,1)=b |
数值函数
函数 | 功能 |
ABS(x) | 返回 x 的绝对值 |
CEIL(x) | 返回大于 x 的最大整数值 进1取整 |
FLOOR(x) | 返回小于 x 的最大整数值 去掉小数位取整 |
MOD(x,y) | 返回 x/y 的模 |
RAND() | 返回 0 到 1 内的随机值 |
ROUND(x,y) | 返回参数 x 的四舍五入的有 y 位小数的值 y默认为0,round(1.246,2)=1.25 |
TRUNCATE(x,y) | 返回数字 x 截断为 y 位小数的结 果直接返回不四舍五入 truncate(1.265,1)=1.2 |
时间函数
函数 | 功能 |
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 中的流程函数函数 | 功能 |
IF(value,t f) | 如果 value 是真,返回 t;否则返回 f if(1,'a','b')=a; |
IFNULL(value1,value2) | 如果 value1 不为空返回 value1,否则返回 value2 ifnull(col1,0) col1列的值不为null就返回他的值不然返回0 |
CASE WHEN [value1] THEN[result1]…ELSE[default]END | 如果 value1 是真,返回 result1,否则返回 default select case when salary<=2000 then 'low' else 'high' end from salary; select case when 10<20 then 'low' else 'high' end; |
CASE [expr] WHEN [value1] THEN[result1]…ELSE[default]END | 如果 expr 等于 value1,返回 result1,否则返回 defaul //TODOt |