当前位置:网站首页>MySQL中的运算符
MySQL中的运算符
2022-07-27 22:05:00 【richest_qi】
文章目录
算术运算符
算术运算符,包括 +、-、*、/ 或者 DIV、% 或者 MOD(求余或求模)。
- MySQL中,
+只做数值相加,如果遇到非数值类型,MySQL会先尝试将其转换为数值,如果转换失败,则当作数值0处理。也就是说,这里存在 隐式转换。 - MySQL中,字符串拼接使用函数
CONCAT(str1,str2,...)实现。 - 空值参与运算,运算结果仍为空值。
- MySQL中,除数为0时,结果为空值,即
NULL。
+ 只做数值相加
# MySQL中,+只做数值相加,如果遇到非数值类型,MySQL会先尝试将其转换为数值,如果转换失败,则当作数值0处理。也就是说,这里存在 隐式转换。
SELECT 100 + '2'
FROM DUAL; -- 返回102
SELECT 100 + 'A'
FROM DUAL; -- 返回100
SELECT 'A' + 'B'
FROM DUAL; -- 返回0
字符串拼接用函数CONCAT()
# MySQL中,字符串拼接使用函数CONCAT()实现
SELECT CONCAT('HEL','LO')
FROM DUAL; -- 返回HELLO
SELECT CONCAT('a','b','c')
FROM DUAL; -- 返回abc
空值参与运算,结果仍为空值
SELECT 100 + NULL
FROM DUAL; -- 返回NULL
除数为0时,结果为空
SELECT 100/0
FROM DUAL; -- 返回NULL
比较运算符
比较运算符,包括 =、<=>、<> 或者 !=、<、<=、>、>=,
也包括 IS NULL、IS NOT NULL、ISNULL()、LEAST()、GREATEST()、BETWEEN AND、IN()、NOT IN()、LIKE、REGEXP、RLIKE。
=,等号运算符。如果一侧为数值,另一侧为非数值,则存在隐式转换。即,先尝试将非数值转换为数值,如果转换失败,则当作数值0处理。=,等号运算符。如果两侧都是字符串,则比较字符串中字符的ANSI编码。=,等号运算符,如果任一侧出现NULL,比较结果为NULL。<=>,安全等于运算符。和=类似,区别在于,<=>可以对NULL进行判断。- 判断字段是
NULL:字段<=>NULL、字段 IS NULL、ISNULL(字段)。 - 判断字段不是
NULL:NOT 字段<=>NULL、字段 IS NOT NULL、NOT ISNULL(字段)。 BETWEEN 条件下界 AND 条件上界,包含边界。- 使用
LIKE进行模糊查询,其中,%,代表不确定个数的字符。可以代表0个字符,可以代表1个字符,也可以代表多个字符。_,代表任意一个字符。\,转义字符。ESCAPE 字符,指定某个字符为转义字符。
REGEXP,正则匹配。常用通配符如下,^,匹配开头。$,匹配结尾。.,匹配任意一个字符。*,匹配0个或多个在它前面的字符。比如,x*,匹配任意数量的x字符;[0-9]*,匹配任意数量的数字;*,匹配任意数量的任意字符。[],匹配方括号内的任意字符。比如,[abc],匹配a或b或c;[a-zA-Z],匹配任意大小写字母;[0-9],匹配任意数字。
= 和 <=>
# 如果一侧为数值,另一侧为非数值,则存在隐式转换。即,先尝试将非数值转换为数值,如果转换失败,则当作数值0处理。
SELECT 1='1',1='a',0='a','1'=1,'a'=1,'a'=0
FROM DUAL;
-- 返回 1 0 1 1 0 1
# 如果=两侧是字符串,则比较字符串中字符的ANSI编码
SELECT 'a'='a','ab'='ab','a'='b'
FROM DUAL;
-- 返回 1 1 0
# =,等号运算符,任一侧出现NULL,结果就为NULL
SELECT 1=NULL,NULL='a',NULL=NULL
FROM DUAL;
-- 返回 NULL NULL NULL
# <=>,安全等于运算符,和=(等号运算符)类似
SELECT 1<=>'1',1<=>'a',0<=>'a','1'<=>1,'a'<=>1,'a'<=>0
FROM DUAL;
-- 返回 1 0 1 1 0 1
SELECT 'a'<=>'a','ab'<=>'ab','a'<=>'b'
FROM DUAL;
-- 返回 1 1 0
# <=>,安全等于运算符,可以对NULL进行判断
SELECT 1<=>NULL,NULL<=>'a',NULL<=>NULL
FROM DUAL;
-- 返回 0 0 1
SELECT *
FROM employees
WHERE commission_pct <=> NULL;
-- 返回 72 行记录
IS NULL、IS NOT NULL和ISNULL()
# 查询表employees中,commission_pct为NULL的数据
SELECT *
FROM employees
WHERE commission_pct <=> NULL;
SELECT *
FROM employees
WHERE commission_pct IS NULL;
SELECT *
FROM employees
WHERE ISNULL(commission_pct);
# 查询表employees中,commission_pct不为NULL的数据
SELECT *
FROM employees
WHERE NOT commission_pct <=> NULL;
SELECT *
FROM employees
WHERE commission_pct IS NOT NULL;
SELECT *
FROM employees
WHERE NOT ISNULL(commission_pct);
BETWEEN … AND …
# 查询工资在[6000,8000]范围内的员工信息
SELECT *
FROM employees
WHERE salary BETWEEN 6000 AND 8000;
SELECT *
FROM employees
WHERE salary>=6000 AND salary<=8000;
SELECT *
FROM employees
WHERE salary>=6000 && salary<=8000;
# 查询工资不在[6000,8000]范围内的员工信息
SELECT *
FROM employees
WHERE salary NOT BETWEEN 6000 AND 8000;
SELECT *
FROM employees
WHERE salary<6000 OR salary>8000;
SELECT *
FROM employees
WHERE salary<6000 || salary>8000;
IN()和NOT IN()
# 查询department_id为10,20,30的员工信息
SELECT *
FROM employees
WHERE department_id IN (10,20,30);
SELECT *
FROM employees
WHERE department_id=10 OR department_id=20 OR department_id=30;
# 查询工资不是6000,7000,8000的员工信息
SELECT *
FROM employees
WHERE salary NOT IN(6000,7000,8000);
SELECT *
FROM employees
WHERE salary<>6000 && salary<>7000 && salary<>8000;
模糊查询:LIKE
# 查询last_name中包含字符'a'的员工信息
SELECT last_name
FROM employees
WHERE last_name LIKE '%a%';
# 查询last_name以字符'a'开头的员工信息
SELECT last_name
FROM employees
WHERE last_name LIKE 'a%';
# 查询last_name中既包含字符'a'又包含字符'e'的员工信息
SELECT last_name
FROM employees
WHERE last_name LIKE '%a%' AND last_name LIKE '%e%';
SELECT last_name
FROM employees
WHERE last_name LIKE '%a%e%' OR last_name LIKE '%e%a%';
# 查询last_name第二个字符为'a'的员工信息
SELECT last_name
FROM employees
WHERE last_name LIKE '_a%';
逻辑运算符
逻辑运算符,包括 NOT 或 !,AND 或 &&、OR 或 || 、XOR (逻辑异或)。
AND和OR可以一起使用,且AND的优先级比OR的优先级高。
位运算符
位运算符,包括 ~(按位取反)、&(按位与)、|(按位或)、^(按位异或)、>>(按位右移)、<<(按位左移)。
边栏推荐
- startUMl
- y79.第四章 Prometheus大厂监控体系及实战 -- prometheus的服务发现机制(十)
- MySQL limit usage and large paging problem solving
- [meetup preview] openmldb + ONEFLOW: link feature engineering to model training to accelerate machine learning model development
- Matlab | those matlab tips you have to know (2)
- 加拿大法院认定孟晚舟“双重犯罪”成立,引渡程序将继续进行!
- Openvino integrates tensorflow to accelerate reasoning
- [BRE]软件构建发布自动化
- Intel AI practice day issue 56 | explore new trends in industry development
- Leetcode 415. string addition and 43. string multiplication
猜你喜欢

startUMl

Confused SCM matrix keys

英特尔AI实践日第56期 | 探讨行业发展新趋势

Basic operations of MySQL database (3) --- Based on fields

Data analysis: disassembly method (details)

冲量在线出席2022数据要素安全流通论坛—政务领域专场,助力行业政务大数据建设创新发展

What has the metauniverse of more than 30 years brought to us?

startUMl

Basic operations of MySQL database (I) --- Based on Database

MATLAB | MATLAB地形生成:矩形迭代法 · 傅里叶逆变换法 · 分形柏林噪声法
随机推荐
How to smoothly go online after MySQL table splitting?
OpenVINO整合TensorFlow实现推理加速
In the first quarter of 2020, the wearable market shipped 72.6 million units, with apple occupying nearly 30% of the market share
推进云网融合,筑路数字经济:英特尔亮相第五届数字中国建设峰会-云生态大会
Arm releases the new a78/g78/n78 kernel! There is also a cortex-x Series CPU that supports customization
code review 工具
Interesting Huffman tree
Harmonyos 3 pure mode can limit the access to personal data of risk applications detected in Huawei's application market
MATLAB | MATLAB地形生成:矩形迭代法 · 傅里叶逆变换法 · 分形柏林噪声法
[must read for new products] valuation analysis of Meishi technology, distributed audio-visual products and Solutions
Redis-三大特殊数据类型的学习和理解
҈直҈播҈预҈告҈ |҈ 炎热盛夏,与Nono一起跨越高温“烤”验吧!
融云 IM & RTC 能力上新盘点
In July, a software testing engineer came to the company. He looked like a hairy boy. He didn't expect to be the new generation of roll King
leetcode 452. Minimum Number of Arrows to Burst Balloons 用最少数量的箭引爆气球(中等)
基本初等函数
The program design questions of the 11th national competition of Bluebridge cup single chip microcomputer
mysql数据库的基本操作(一)-——基于数据库
Yangchuanhui, CTO of oceanbase: some HTAP databases are not real htaps
LeetCode_位运算_中等_137.只出现一次的数字 II