一直在练注入,碰到了一些运算符,原来一直没学过,这次系统的整理下。
Mysql运算符分类
- 算术运算符
- 比较运算符
- 逻辑运算符
- 位运算符
算术运算符
- MySQL 支持的算术运算符包括:
注意:在除法运算和模运算中,如果除数为0,将是非法除数,返回结果为NULL。 - 加法
- 减法
- 乘法
- 除法
这里的/和div还是有一不样的,div是在除法后取整。 - 取模/取余
这里并没有什么太大差距,也没有一些资料上说的%不可以用于负数,都是成立的。
比较运算符
- 通常select可以通过比较运算符来筛选数据,成立为1,不成立为0。
- 相等/不相等比较
- 大小比较
例1中1大于2为0,0又大于等0,所以成立,结果为1。
例2中1小于2为1,1不小于等于0,所以不成立,结果为0。 - 在/不在两值之间比较
- 在/不在集合之中比较
- 模型匹配
当然可以也可以使用其它的通配符。% : 匹配0个或任意多个字符 _ : 匹配任意一个字符 escape : 转义字符,可匹配%和_。
- 正则式匹配比较
可以使用rlike或者使用regexp,常用通配符:. 、* 、 [] 、 ^ 、 $ 、{n}. : 匹配任意单个字符 * : 匹配0个或多个前一个得到的字符 * [] : 匹配任意一个[]内的字符,[ab]*可匹配空串、a、b、或者由任意个a和b组成的字符串。 * ^ : 匹配开头,如^s匹配以s或者S开头的字符串。 * $ : 匹配结尾,如s$匹配以s结尾的字符串。 * {n} : 匹配前一个字符反复n次。
逻辑运算符
- 逻辑运算符用来判断表达式的真假。如果表达式是真,结果返回 1。如果表达式是假,结果返回 0。
- 逻辑非
- 逻辑与
只有当两个条件均为真时,结果才为真,&&效果等同。
- 逻辑或
只要有一个条件为真时,结果就为真,||效果等同。
- 逻辑异或
同真同假都为假,有一个为真就为真,有一个Null就为Null。
位运算符
- 位运算符是在二进制数上进行计算的运算符。位运算会先将操作数变成二进制数,进行位运算。然后再将计算结果从二进制数变回十进制数。
- 按位与
对应的二进制位都为 1 ,则该位的运算结果为 1 ,否则为 0
- 按位或
对应的二进制位若有1 ,则该位的运算结果为 1 ,否则为 0
- 按位异或
对应的二进制位不相同时,结果为 1 ,否则为 0
- 按位左移
使指定的二进制位都左移指定的位数,左移指定位之后,左边高位的数值将被移出并丢弃,右边低位空出的位置用 0 补齐
- 按位右移
使指定的二进制位都右移指定的位数,右移指定位之后,右边低位的数值将被移出并丢弃,左边高位空出的职位用 0 补齐
- 按位取反
对应的二进制位01互换
运算符优先级
- 最低优先级为: :=。
- 最高优先级为: !、BINARY、 COLLATE。