0 序言
本文围绕MySQL中的运算符展开,重点讲解算术、比较、逻辑、位运算符的定义、规则、示例及优先级并介绍正则表达式查询的相关内容。 通过本文的学习,你能初步掌握各类运算符的用法,理解其背后逻辑,解决实际查询中的运算问题,提升SQL语句编写能力。
1 算术运算符
算术运算符用于数学运算,连接两个数值或表达式,进行加、减、乘、除、取模操作。
1.1 加法与减法运算符
计算两个值或表达式的和(+)、差(-)。
SELECT 100, 100 + 0, 100 - 0, 100 + 50, 100 + 50 -30, 100 + 35.5, 100 - 35.5 FROM dual;
结果如下:
就跟正常的运算是一样的,这里就不过多解释了。
牢记以下几点规则:
整数间加减,结果为整数;整数与浮点数加减,结果为浮点数。
加法和减法优先级相同,运算顺序不影响结果。
MySQL中“+”仅表数值相加,遇非数值先转数值,失败则按0计算,字符串拼接用CONCAT()。
1.2 乘法与除法运算符
计算两个值或表达式的乘积(*)、商(/或DIV)。
SELECT 2*5/2, 100*1, 100*1.0, 100/1.0, 100/2, 100+2*5/2, 100/3, 100 DIV 0 FROM dual;
结果如下:
同理,牢记以下规则:
乘1或除1(整数)结果为原数;乘1.0或除1.0结果为浮点数,值与原数相等。
除法结果为浮点数,除不尽时保留4位小数。
乘除优先级相同,顺序不影响结果;除数为0时结果为NULL。
1.3 求模(求余)运算符
计算两个值或表达式的余数(%或MOD)。
SELECT 12%3, 12 MOD 5 FROM dual;
结果如下:
又比如说,我要筛选employee_id为偶数的员工:
SELECT * FROM employees WHERE employee_id MOD 2 = 0;
这里id号为偶数的员工就全被选择出来了。
2 比较运算符
用于比较左右操作数,结果为1(真)、0(假)或NULL,常用于SELECT查询的条件。
2.1 等号运算符(=)
判断两边值、字符串或表达式是否相等。
规则如下:
均为字符串:比较ANSI编码;
均为整数:比较大小;一整数一字符串:字符串转数字比较。
含NULL时结果为NULL。
SELECT 1=1, 1='1', 1=0, 'a'='a', (5+3