一、比较运算符
(注意:输出结果只有两种,1或0,其中1表示正确,0表示错误,如果字符串隐式转换不成功则为0)
(1)等号运算符,应遵循以下规则:
- 如果等号两边的值、字符串或表达式都是字符串时,则MySQL会按照字符串进行比较,其比较的是每个字符串中字符的ANSI编码是否相等;
- 如果等号两边都是整数,则MySQL会按照整数进行比较两个值的大小
- 如果等号两边的值一个是整数,一个是字符串,则MySQL会将字符串转化为数字进行比较
- 如果等号两边的值、字符串或表达式中有一个为NULL,则结果为NULL。
(2)安全等于运算符
安全等与运算符(<=>)与等于运算符(=)的作用是相似的,唯一的区别是‘<=>'可以用来对NULL进行判断,在两个操作数均为NULL时,其返回值为1,而不为NULL;当操作数一个为NULL时,其返回值为0,而不为NULL;
非符号类型的运算符:
具体效果:
least:
select least('c','s','b','f') from dual;
greatest:
select greatest('x','w','z','a') from dual;
注意:当字符串不是单独一个字符时,least判断的是由第一个字符按字典排序,而并非字符串的长度)
在like模糊匹配运算符中,一个_表示一个字符。
语法格式:
select 名称 from 表名 where 名称 like '_a%'(查询第二个字符是a的信息)
(3)regexp运算符
REGEXP运算符用来匹配字符串,语法格式为 expr regexp 匹配条件,如果expr满足匹配条件,返回1,如果不满足,则返回0,若expr或匹配条件任意一个为NULL,则为NULL。
REGEXP运算符在进行匹配时,常用的有下面几种通配符:
- '^':匹配以该字符后面的字符开头的字符串。
- '$':匹配以该字符前面的字符结尾的字符串。
- '.':匹配任何一个单字符。
- "[...]":匹配在方括号内的任意字符。为了命名字符的范围,使用一个'-'。"['a'-'z']"匹配任何字符,而"[0-9]"匹配任何数字。
- '*':匹配零个或多个在他前面的字符,例如:'x*'匹配任何数量的'x'字符,"[0-9]*"匹配任何数量的字符
二、逻辑运算符
逻辑运算符主要用来判断表达式的真假,在MySQL中,逻辑运算符的返回值为1,0或为NULL。
MySQL中支持4种逻辑运算符:
(注意:or跟and是可以一起使用,但是在使用时要注意两者的优先级,由于and的优先级高于or,因此先对and的两边进行操作,再与or进行操作)
(1)运算符的优先级
数字编号越大,优先级越高,优先级高的运算符先进行运算。
三、位运算符
位运算符是在二进制数上进行计算的运算符。位运算符会先将操作数变成二进制数,然后进行位运算,最后将计算结果从二进制变回十进制数。
MySQL支持的位运算符如下:
select 12&5,12|5,12^5 from dual;
相关解释:
在一定范围内,向左移动一位就是乘以2,向右移动一位就是除以2。(最本质的还是将其转化为二进制操作后再转为十进制)