一,算术运算符
算术运算符顾名思义就是计算用的,再学习编程语言的基础都会涉及,SQL也不例外
运算符
|
名称
|
作用
|
示例
|
+
|
加法运算符
|
求和
|
SELECT A+B
|
-
|
减法运算符
|
求差 |
SELECT A-B
|
*
|
乘法运算符
|
求乘
|
SELECT A*B
|
/或DIV
|
除法运算符
|
求除
|
SELECT A/B 或者
SELECT A DIV B
|
%或MOD
|
求模(取余)运算符
|
求余
|
SELECT A%B 或者
SELECT A MOD B
|
例1:
SELECT 100,100+0,100-0,100+50,100+50-30,100+35.9,100-81.23 FROM qrtz_locks;
注意:
- 一个整数类型的值对整数进行加法和减法操作,结果还是一个整数
- 一个整数类型的值对浮点数进行加法和减法操作,结果是一个浮点数
- 加法和减法的优先级相同,进行先加后减操作与进行先减后加操作结果一样
- 在java中,+的左右两边如果有字符串,那么作用就是拼接。但是在MySQL中+只表示数值相加,如果遇到非数值类型,先尝试转成数值,如果转失败就按0计算
例2:
/*1,假如是java就是10020,但MySQL会减'20'隐式转换为数值类型进行相加 2,'a'不能转化为数值类型,就进行为0 3,任何数值与null进行运算,结果都为null*/ SELECT 100+'20',100+'a',100+NULL FROM qrtz_locks;
2,乘除运算符
例:
SELECT 100,100*1,100*1.0,100/1.0,100/2,100+2 * 6 / 3,100 DIV 0 FROM qrtz_locks;
注意:
- 一个数乘以整数1和除以整数1仍然为原数
- 一个数乘以浮点数1和除以浮点数1会变成浮点数,但数值不变
- 一个数除以整数后,不管是否能除尽都为浮点数
- 一个数除以另一个数,除不尽时,结果为一个浮点数,并保留到小数点后4位
- 乘法和除法优先级相同,进行先乘后除和先除后乘操作,得到的结果都相同
- 在数学运算中0不能位除数,Mysql中一个数除以0结果为null
3,取模运算符
例:
SELECT 12 % 7,-45 MOD 6 FROM qrtz_locks;
二,比较运算符
比较运算符用来对左边的操作数和右边的操作数进行比较,比较的结果为真则返回1,比较的结果为假则返回0,其他情况则返回NULL
比较运算符被用来作为SELECT查询语句的条件来使用,返回符号条件的结果记录
一,通用的比较运算符
运算符 | 名称 | 作用 | 示例 |
= | 等于运算符 | 判断两个值,字符串或表达式是否相等 | SELECT * FROM TABLE WHERE A=B |
<=> | 安全等于运算符 | 安全的判断两个值,字符串或表达式是否相等 | SELECT * FROM TABLE WHERE A <=> B |
<>(!=) | 不等于运算符 | 判断两个值,字符串,表达式是否不相等 | SELECT * FROM TABLE WHERE A <> B
SELECT * FROM TABLE WHERE A != B |
< | 小于运算符 | 判断前面的值,字符串,表达式是否小于后面的值,字符串 | SELECT * FROM TABLE WHERE A <B |
<= | 小于等于运算符 | 判断前面的值,字符串,表达式是否小于或等于后面的值,字符串 | SELECT * FROM TABLE WHERE A <= B |
> | 大于运算符 | 判断前面的值,字符串,表达式是否大于后面的值,字符串 | SELECT * FROM TABLE WHERE A > B |
>= | 大于等于运算符 | 判断前面的值,字符串,表达式是否大于或等于后面的值,字符串 | SELECT * FROM TABLE WHERE A >= B |
1,等于运算符
等号运算符(=)判断等号两边的值,字符串或表达式是否相等,如果相等则返回1,不相等则返回0
使用等号运算符时,遵循的规则:
- 如果等号两边的值,字符串或表达式都为字符串,则MySQL会按照字符串进行比较,其比较的是每个字符串中字符的ASCII编码是否相等
- 如果等号两边的值都是整数,则MySQL会按照整数来比较两个值的大小
- 如果等号两边的值是一个整数,另一个是字符串,则MySQL会将字符串转化为数字进行比较
- 如果字符串隐式转化为数值类型不成功,如"a"不能转化为数值,MySQL则将它设置为零
- 如果等号两边的值,字符串或表达式中有一个NULL,则比较结果为NULL
例:
SELECT 1=1,1='1',1=0,(1+2)=(7-4),1='a',0='a','abc'='abc','a'='c',1=NULL,NULL=NULL FROM qrtz_locks;
2,安全等于运算符
安全等于运算符(<=>)与等于运算符(=)作用是相似的,唯一的区别是"<=>"可以用来对NULL进行判断
- 当两个操作数均为NULL时,其返回值为1,而不为NULL,当一个操作数为NULL时,其返回值为0
例:
SELECT 1<=>2,1<=>'1',1<=>'a','a'<=>'b',1<=>NULL,NULL<=>NULL;
3,大于,小于,不等于……运算符
规则:和等于时差不多
- 当运算符左右两边的值都为字符串类型,MySQL会按字符串进行比较,其比较字符的ASICC码
- 如果运算符左右两边的值都是整数,则MySQL会按照整数来比较两个值的大小
- 如果运算符两边的值是一个整数,另一个是字符串,则MySQL会将字符串转化为数字进行比较
- 如果字符串隐式转化为数值类型不成功,如"a"不能转化为数值,MySQL则将它设置为零
- 如果字符串两边的值,字符串或表达式中有一个NULL,则比较结果为NULL
例:
SELECT 'AS'>'a','a'<8,'4'>3,'a'<>'b',1<NULL,NULL>=NULL;
二,内置比较关键字
MySQL除了提供通用的符号类型的比较符外,还内置很多了非符号类型的比较关键字
关键字 | 名称 | 作用 | 示例 |
IS NULL | 为空关键字 | 判断值,字符串或表达式是否为空 | SELECT B FROM TABLE WHERE A IS NULL |
IS NOT NULL | 不为空关键字 | 判断值,字符串或表达式是否不为空 | SELECT B FROM TABLE WHERE A IS NOT NULL |
LEAST | 最小关键字 | 在多个值中返回最小值 | SELECT D FROM TABLE WHERE C LEAST(A,B) |
GREATEST | 最大值关键字 | 在多个值中返回最大值 | SELECT D FROM TABLE WHERE C GREATEST(A,B) |
BETWEEN … AND… | 两值之间的关键字 | 判断一个值是否在两个值之间 | SELECT D FROM TABLE WHERE C BETWEEN A AND B |
NOT BETWEEN… AND… | 非两值之间的关键字 | 判断一个值是否不在两个值之间 | SELECT D FROM TABLE WHERE C NOT BETWEEN A AND B |
IN(…) | 属于关键字 | 判断一个值是否为列表中的任意一个值 | SELECT D FROM TABLE WHERE C IN(A,B) |
NOT IN(…) | 不属于关键字 | 判断一个只是否不属于列表中的任意值 | SELECT D FROM TABLE WHERE C NOT IN(A,B) |
LIKE | 模糊匹配关键字 | 判断一个值是否符号模糊匹配规则 | SELECT D FROM TABLE WHERE A LIKE B |
REGEXP | 正则表达式关键字 | 判断一个字符是否符号正则表达式规则 | SELECT D FROM TABLE WHERE A REGEXP B |
RLIKE | 正则表达式关键字 | 判断一个值是否符号正则表达式 | SELECT D FROM TABLE WHERE A RLIKE B |
1,NULL值的判断
SELECT 'a' IS NULL,NULL IS NOT NULL,'a' IS NOT NULL;
2,between取区间值
- between 100 and 200和100<=a<=200是一样
SELECT * FROM users_resulttable WHERE userId BETWEEN 1 AND 5;
3,IN包含
SELECT * FROM users_resulttable WHERE userId IN(1,2,3);
4,like模糊匹配
- %:代表任意多个字符
- _:代表一个不确定的字符
- \:转义符
例:
#imdbId字段以14开头 SELECT * FROM users_resulttable WHERE imdbId LIKE "14%";
5,正则匹配
格式:
- expr REGEXP 匹配条件
- expr RLIKE 匹配条件
通配符:
- ^:匹配以该字符后面的字符开头的字符串
- $:匹配以该字符前面的字符结尾的字符串
- .:匹配任意单个字符
- […]:匹配在括号内的任意字符,例如:[abc]匹配a,b,c,[a-z]匹配a到z的所有字符
- *:匹配零个或者多个在它前面的字符
- ……
例:
SELECT "SpringCloudAlibaba" REGEXP "^S","Netty" REGEXP 'y$';
三,逻辑运算符
逻辑运算符主要用于判断表达式的真假,在MySQL中,逻辑运算符的返回结果为1(真),0(假),NULL
MySQL支持一下四种逻辑运算符:
运算符 | 作用 | 示例 |
NOT 或 ! | 逻辑非 | SELECT NOT A |
AND 或 && | 逻辑与 | SELECT A AND B
SELECT A && B |
OR 或 || | 逻辑或 | SELECT A OR B
SELECT A && B |
XOR | 逻辑异或 | SELECT A XOR B |
优先级:
数字越大优先级越高
1,逻辑非
SELECT * FROM users_resulttable WHERE userId NOT BETWEEN 1 AND 7;
2,逻辑与
SELECT * FROM users_resulttable WHERE userId IN(1,2,3) AND rating NOT IN(5.0,2.0,4.0,3.0); SELECT * FROM users_resulttable WHERE userId IN(1,2,3) && rating NOT IN(5.0,2.0,4.0,3.0);
3,逻辑或
SELECT * FROM users_resulttable WHERE userId IN(4,6) OR rating IN(2.5) SELECT * FROM users_resulttable WHERE userId IN(4,6) || rating IN(2.5)
四,位运算符
位运算符是在二进制上进行计算的运算符,位运算会先将操作数转化成二进制数,然后进行位运算,最后计算结果从二进制再转化成十进制
MySQL运算符如下:
运算符 | 作用 | 示例 |
& | 按位与 | SELECT A & B |
| | 按位或 | SELECT A | B |
^ | 按位异或 | SELECT A ^ B |
~ | 按位取反 | SELECT ~A |
>> | 按位右移 | SELECT A >> 2 |
<< | 按位左移 | SELECT B << 2 |
注:A >> 2就相当于A除以2的2次方,B << 4 就相当于B乘以2的4次方
例1:
SELECT 12 & 5,12 | 5,12 ^ 5;
例2:
#2<<2 = 2*2^3; 4>>2 = 4/2^2 SELECT 2<<3,4>>2;
Comments | NOTHING
Warning: Undefined variable $return_smiles in /www/wwwroot/wql_luoqin_ltd/wp-content/themes/Sakura/functions.php on line 1109