比较运算符的使用
等号运算符
= 判断等号两边的值,字符串或表达式是否相等,如果相等则返回1,不相等则返回0.
需要遵守如下规则:
1.如果等号两边都为字符串,则Mysql会按照字符串进行比较,其比较的是每个字符的ANSI编码是否相等。
2.如果等号两边都是整数。则会按照两个整数的值来比较大小。
3.如果等号两边一个是整数,一个是字符串,则Mysql会将·字符串转换成数字进行比较。
4.如果等号两边有一个为NULL,则比较结果为NULL
SELECT 1=2,1!=2,1='a',0='a'
FROM DUAL;
结果为: 0,1,0,1
字符串存在隐式转换,如果数值转化不成功,则看作0
SELECT 'a'='a','as'='as','d'='a'
FROM DUAL;
结果为:1,1,0
SELECT '1'=NULL,NULL=NULL
FROM DUAL;
结果为:NULL,NULL
<=>安全等于
和=一样,除了当为NULL时,唯一区别可以对NULL进行判断
在两个操作数均为NULL时,其返回值为1,而不为NULL
当一个操作数为NULL时,其返回值为0,而不为NULL
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
在使用时,要注意上下限问题(包含边界值)
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的员工信息
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’的员工信息·
SELECT name
FROM empolyees
WHERE name LIKE 'a';
查询名字中包含字符;‘a’的员工信息
% 代表有不确定个数的字符
%a%代表前面后面都有不确定个数的字符
SELECT name
FROM empolyees
WHERE name LIKE '%a%';
查询名字中包含字符‘a’和‘w’的员工信息
SELECT name
FROM empolyees
#方法一:
WHERE name LIKE '%a%' AND LIKE '%w%';
#方法二:
WHERE name LIKE '%a%e%' OR name LIKE '%e%a%';
_代表一个不确定的字符
查找第二个字符为a的员工信息
SELECT name
FROM empolyees
WHERE name LIKE '_a%';
如果当_就是要查找的字符时,要用到转义字符 \
查找第二个字符为_,而且第三个字符为a 的员工信息
SELECT name
FROM empolyees
WHERE name LIKE '_\_a%';
用¥来充当转义字符
SELECT name
FROM empolyees
WHERE name LIKE '_¥_a%' ESCAPE ¥;
PEGEXP/ RLIKE
精准的来查询信息,其中有
逻辑运算符使用
运算符 | 作用 |
---|---|
NOT或! | 逻辑非 |
AND或&& | 逻辑与 |
OR | 逻辑或 |
XOR | 逻辑异或 |
注意:
OR与AND能一起使用,但是在使用时要注意两者之间的优先级关系。
AND的优先级高于OR,因此在运算时,先对AND进行运算,得到的结果再与OR进行运算
位运算符
位运算符是在二进制数上进行计算的运算符。位运算符会先将操作数变为二进制数,然后进行位运算,最后将计算结果从二进制变回十进制
运算符 | 作用 |
---|---|
& | 按位与(位AND) |
直线(语法问题,无法输入) | 按位或(位OR) |
^ | 按位异或(位XOR) |
~ | 按位取返 |
>> | 按位右移 |
<< | 按位左移 |
此外如果大家有购书需求,欢迎大家考虑一下清华社,直接以最低的价格买到最好的书!
清华社 IT BOOK 多得图书活动开始啦!活动时间为 2023 年 6 月 7 日至 6 月 18 日,\n清华社为您精选多款高分好书,涵盖了 C++、Java、Python、前端、后端、数据库、算法与机器学习等多个 IT 开发领域,适合不同层次的读者。全场 5 折,扫码领券更有优惠哦!\n快来京东点击链接 IT BOOK 多得(或扫描京东二维码)查看详情吧!