比较运算符的使用
等号运算符
= 判断等号两边的值,字符串或表达式是否相等,如果相等则返回1,不相等则返回0. 需要遵守如下规则: 1.如果等号两边都为字符串,则Mysql会按照字符串进行比较,其比较的是每个字符的ANSI编码是否相等。 2.如果等号两边都是整数。则会按照两个整数的值来比较大小。 3.如果等号两边一个是整数,一个是字符串,则Mysql会将·字符串转换成数字进行比较。 4.如果等号两边有一个为NULL,则比较结果为NULL
代码语言:javascript复制SELECT 1=2,1!=2,1='a',0='a'
FROM DUAL;
结果为: 0,1,0,1 字符串存在隐式转换,如果数值转化不成功,则看作0
代码语言:javascript复制SELECT 'a'='a','as'='as','d'='a'
FROM DUAL;
结果为:1,1,0
代码语言:javascript复制SELECT '1'=NULL,NULL=NULL
FROM DUAL;
结果为:NULL,NULL
<=>安全等于
和=一样,除了当为NULL时,唯一区别可以对NULL进行判断 在两个操作数均为NULL时,其返回值为1,而不为NULL 当一个操作数为NULL时,其返回值为0,而不为NULL
代码语言:javascript复制SELECT '1'=NULL,NULL=NULL
FROM DUAL;
结果为:0,1
不等于运算符<>/!=
用于判断两边的字符串,数字,表达式的值是否不相等。如果不相等则返回一,相等则返回0. 不等运算符不能判断NULL值,当任意一边出现NULL或者都是NULL时,返回值都是NULL
非符号类型的运算符
IS NULL 为空运算符 | 判断值,字符串,表达式是否为空 |
---|---|
IS NOT NULL 不为空运算符 | 判断值,字符串,表达式是否不为空 |
LEAST 最小值运算符 | 在多个值中返回最小值 |
GREATEST最大值运算符 | 在多个值中返回最大值 |
BETWEEN AND 两值之间的运算符 | 判断一个值是否在两个值之间 |
ISNULL 为空运算符 | 判断一个值,字符串,表达式是否为空 |
IN 属于运算符 | 判断一个值是否为列表中的任意一个值 |
NOT IN不属于运算符 | 判断一个值是否不是一个列表中任意一个值 |
LIKE 模糊匹配运算符 | 判断一个值是否符合模糊匹配规则 |
PEGEXP 正则表达式运算符 | 判断一个值是否符合正则表达式的规则 |
RLIKE 正则表达式 | 判断一个值是否符合正则表达式的规则 |
比如
BETWEEN AND
在使用时,要注意上下限问题(包含边界值)
代码语言:javascript复制SELECT age
FROM empolyees
WHERE age BETWEEN 10 AND 20;
#或者 WHERE age NOT BETWEEN 10 AND 20;
#WHERE age BETWEEN 100 AND 20; 错误写法
IN
查询年龄为10或20的员工信息
代码语言:javascript复制SELECT age
FROM empolyees
#方法一:WHERE age=10 OR age=20;
#方法二:WHERE age IN(10,20);
WHERE age NOT IN(10,20);#查询年龄不是10,20的员工信息
LIKE
查询名字为‘a’的员工信息·
代码语言:javascript复制SELECT name
FROM empolyees
WHERE name LIKE 'a';
查询名字中包含字符;‘a’的员工信息 % 代表有不确定个数的字符 %a%代表前面后面都有不确定个数的字符
代码语言:javascript复制SELECT name
FROM empolyees
WHERE name LIKE '%a%';
查询名字中包含字符‘a’和‘w’的员工信息
代码语言:javascript复制SELECT name
FROM empolyees
#方法一:
WHERE name LIKE '%a%' AND LIKE '%w%';
#方法二:
WHERE name LIKE '%a%e%' OR name LIKE '%e%a%';
_代表一个不确定的字符 查找第二个字符为a的员工信息
代码语言:javascript复制SELECT name
FROM empolyees
WHERE name LIKE '_a%';
如果当_就是要查找的字符时,要用到转义字符
查找第二个字符为_,而且第三个字符为a 的员工信息
代码语言:javascript复制SELECT name
FROM empolyees
WHERE name LIKE '__a%';
用¥来充当转义字符
代码语言:javascript复制SELECT name
FROM empolyees
WHERE name LIKE '_¥_a%' ESCAPE ¥;
PEGEXP/ RLIKE
精准的来查询信息,其中有
逻辑运算符使用
运算符 | 作用 |
---|---|
NOT或! | 逻辑非 |
AND或&& | 逻辑与 |
OR | 逻辑或 |
XOR | 逻辑异或 |
注意: OR与AND能一起使用,但是在使用时要注意两者之间的优先级关系。 AND的优先级高于OR,因此在运算时,先对AND进行运算,得到的结果再与OR进行运算
位运算符
位运算符是在二进制数上进行计算的运算符。位运算符会先将操作数变为二进制数,然后进行位运算,最后将计算结果从二进制变回十进制
运算符 | 作用 |
---|---|
& | 按位与(位AND) |
直线(语法问题,无法输入) | 按位或(位OR) |
^ | 按位异或(位XOR) |
~ | 按位取返 |
>> | 按位右移 |
<< | 按位左移 |