浙江省建设通网站,wordpress 优化,上海有实力的seo推广咨询,浦江网站建设yw126文章目录一、比较运算符#xff08;一#xff09;正则表达式#xff08;二#xff09;模糊匹配 LIKE#xff08;三#xff09;转义字符二、单行比较运算符#xff08;一#xff09;安全等号 1. 和 的相同点2. 和 的不同点#xff08;二#xff09;区间运算…
文章目录一、比较运算符一正则表达式二模糊匹配 LIKE三转义字符二、单行比较运算符一安全等号 1. 和 的相同点2. 和 的不同点二区间运算符 between...and...三为空 is null四不为空 is not null五空字符串六二进制数比较 binary三、多行比较运算符一 ALL二 ANY三在集合中 IN四不在集合中 NOT IN四、算术运算符一除 /二求商 DIV三幂运算 power四取模五、逻辑运算符一逻辑与二逻辑或三非四异或六、位运算符一按位右移二按位异或三按位取反七、运算符优先级一、比较运算符
SELECT 语句中的条件语句经常要使用比较运算符。通过这些比较运算符可以判断表中的哪些记录是符合条件的。比较结果为真即比较关系成立则返回 1比较结果为假即比较关系不成立则返回 0比较结果不确定则返回 NULL。
符号描述备注等于binary二进制数比较例如使用 比较时前面加上 binary则会比较两者的二进制数 或 !不等于在 SQL 的一些版本中该操作符可被写成 ! 在任何 SQL 中都起作用但是 ! 在 sql2000 中则是语法错误不兼容推荐使用 。大于小于小于等于大于等于BETWEEN...AND...在两值之间min maxNOT BETWEEN...AND...不在两值之间IN在集合中NOT IN不在集合中安全等于与 的区别在于当两个操作码均为 NULL 时其所得值为 1 而不为 NULL而当一个操作码为 NULL 时其所得值为 0 而不为 NULL。LIKE匹配某种模式通常结合通配符使用。筛查出匹配某种模式的NOT LIKE筛查出不匹配某种模式的即过滤掉匹配某种模式的REGEXP 或 RLIKE正则式匹配IS NULL为空IS NOT NULL不为空LEAST最小的当有两个或多个参数时返回最小值GREATEST最大的当有两个或多个参数时返回最大值
一正则表达式
能够匹配到文本则返回 1如下所示
mysql select beijing regexp jing;
-------------------------
| beijing regexp jing |
-------------------------
| 1 |
-------------------------
1 row in set (0.00 sec)注‘beijing’ 是被匹配的源字符串‘jing’ 是正则表达式。
mysql select beijing regexp xi;
-----------------------
| beijing regexp xi |
-----------------------
| 0 |
-----------------------
1 row in set (0.00 sec)二模糊匹配 LIKE
% 表示匹配任意数量包含 0 个的任意字符跟 like 配合使用_ 下划线表示匹配任意 1 字符
select * from emp_xxx where lower(job) like %sales%;
select * from emp_xxx where job like _a%;三转义字符
查询表名以 S_ 开头的表的总数
select count(*) from user_tables where table_name like S\_% escape \;说明 _ 是特殊符号需要转义成普通字符。如果要查询的数据中有特殊字符比如 _ 或 %在做模糊查询时需要加上反斜杠 \ 符号表示转义并且用 escape 短语指明转义符号 \。
二、单行比较运算符
单行比较运算符、、、、、、单行比较运算符只能和一个值比较即后面只能跟着“一个值”。
注意SQL 语句中的等号 不是赋值表达式而是相等比较表达式比较表达式/相等关系式/相等表达式/相等关系表达式
一安全等号
1. 和 的相同点
像常规等于号 一样两个值进行比较如果比较结果是真即比较关系成立两边的值相等则返回结果值 1比较结果是假即比较关系不成立两边的值不相等则返回结果值 0。
A B 这个比较表达式比较结果为假返回 0
a a 这个比较表达式比较结果为真返回 12. 和 的不同点 和 不同的是空值 NULL 是没有任何意义的所以等号 运算符不能把 NULL 作为有效的结果任何数值与空值通过等号 比较的结果都是 NULL但是很多时候我们并不希望得到这样的结果所以可以使用安全等号 。
例如a NULL 得 0NULL NULL 得出 1。而等号 运算符规则是 a NULL 结果是 NULL甚至 NULL NULL 结果也是 NULL。
除了 还有两个其他的操作符用来处理某个值和 NULL 做比较也就是 IS NULL 和 IS NOT NULL。他们是 ANSI 标准中的一部分因此也可以用在其他数据库中。而 只能在 Mysql 中使用。
你可以把 当作 Mysql 中的方言。
a IS NULL a NULL
a IS NOT NULL NOT(a NULL)据此你可以把下面的查询语句的条件改的更具移植性一点
where t1.name is null二区间运算符 between…and…
select * from emp_xxx where salary between 5000 and 10000;
select * from emp_xxx where salary not between 5000 and 8000;三为空 is null
select * from emp_xxx where bonus is null;四不为空 is not null
select * from emp_xxx where bonus is not null;五空字符串
查询字段 bonus 为空串的所有记录信息
select * from emp_xxx where bonus ;六二进制数比较 binary
mysql select binary bB;
----------------
| binary bB |
----------------
| 0 |
----------------
1 row in set (0.00 sec)mysql select bB;
---------
| bB |
---------
| 1 |
---------
1 row in set (0.00 sec)说明使用 比较字符时默认不区分大小写所以小写 b 和大写 B相等比较结果为真返回 1如果前面加上 binary则是比较两者的二进制数肯定是不同的所以比较结果为假返回 0。
三、多行比较运算符
多行比较运算符 ALL、 ANY、 ALL、 ANY、IN可以和多个值比较后面可以跟着“多个值”
一 ALL
select ename from emp_xxx
where salary ALL(500,1000,2500);二 ANY
select ename from emp_xxx
where salary ANY(500,1000,2500);三在集合中 IN
select * from emp_xxx where job in (Manager , Analyst);四不在集合中 NOT IN
select * from emp_xxx where depno not in (20 , 30);注意 not in(列表)的列表中有 null 值 , 将没有结果返回所以列表中不能含有 nullin(列表)则没有关系。
四、算术运算符
运算符作用加法-减法*乘法/除法运算商如果是小数最多会保留小数点的后四位且会四舍五入DIV除法运算整除商如果是小数只保留整数部分且不会四舍五入%求余MOD取模余数和模数实际运算是有区别的详见《求余和取模的计算公式》power幂运算、乘方运算
注意
在除法运算和模运算中如果除数为0将是非法除数返回结果为NULL。加法运算时若含有字符串而字符串以数字开头转换成数字如下
mysql select 15a;
--------
| 15a |
--------
| 6 |
--------
1 row in set, 1 warning (0.00 sec)加法运算时若含有字符串而字符串以字母开头的转换成 0如下所示
mysql select 1a5;
--------
| 1a5 |
--------
| 1 |
--------
1 row in set, 1 warning (0.00 sec)一除 /
mysql select 8/3;
--------
| 8/3 |
--------
| 2.6667 |
--------二求商 DIV
mysql select 8 div 3;
---------
| 8 div 3 |
---------
| 2 |
---------
1 row in set (0.00 sec)三幂运算 power
mysql select power(2,3);
------------
| power(2,3) |
------------
| 8 |
------------
1 row in set (0.00 sec)四取模
mysql select 10 MOD 4;
----------
| 10 MOD 4 |
----------
| 2 |
----------五、逻辑运算符
逻辑运算符用来判断表达式的真假。如果表达式是真结果返回 1。如果表达式是假结果返回 0。
运算符号作用NOT 或 !逻辑非AND 或 逻辑与OR 或 ||逻辑或XOR 或 ^逻辑异或
一逻辑与 或者 AND 是“与”运算的两种表达方式。如果所有数据不为0且不为空值NULL则结果返回1如果存在任何一个数据为0则结果返回0如果存在一个数据为NULL且没有数据为0则结果返回NULL。“与”运算符支持多个数据同时进行运算。
mysql select 2 and 0;
---------
| 2 and 0 |
---------
| 0 |
---------
1 row in set (0.00 sec)mysql select 2 and 3;
---------
| 2 and 3 |
---------
| 1 |
---------
1 row in set (0.00 sec)二逻辑或
两者只要有一个数是大于 0 的表达式就是真返回 1。如下所示
mysql select 2 or 0;
--------
| 2 or 0 |
--------
| 1 |
--------mysql select 0 or 0;
--------
| 0 or 0 |
--------
| 0 |
--------mysql select 1 || 0;
--------
| 1 || 0 |
--------
| 1 |
--------mysql select null or 1;
-----------
| null or 1 |
-----------
| 1 |
-----------三非
mysql select not 1;
-------
| not 1 |
-------
| 0 |
-------mysql select !0;
----
| !0 |
----
| 1 |
----四异或
两者的值相同则表示假返回 0两者的值不同则表示真返回 1。这里的值是指 1 或者 0。
mysql select 1 xor 1;
---------
| 1 xor 1 |
---------
| 0 |
---------mysql select 0 xor 0;
---------
| 0 xor 0 |
---------
| 0 |
---------mysql select 1 xor 0;
---------
| 1 xor 0 |
---------
| 1 |
---------mysql select 1 ^ 0;
-------
| 1 ^ 0 |
-------
| 1 |
-------六、位运算符
位运算符是在二进制数上进行计算的运算符。位运算会先将操作数变成二进制数进行位运算。然后再将计算结果从二进制数变回十进制数。
运算符号作用按位与|按位或^按位异或~按位取反左移右移
一按位右移
mysql select 31;
------
| 31 |
------
| 1 |
------二按位异或
mysql select 3^5;
-----
| 3^5 |
-----
| 6 |
-----三按位取反
mysql select ~18446744073709551612;
-----------------------
| ~18446744073709551612 |
-----------------------
| 3 |
-----------------------七、运算符优先级
优先级由低到高排列运算符1(赋值运算、:2||、OR、XOR3、AND4NOT5BETWEEN、CASE、WHEN、THEN、ELSE6(比较运算、、、、、、、!、 IS、LIKE、REGEXP、IN7|89、10-(减号、11*、/、DIV、%、MOD12^13-一元减号、〜一元比特反转14!、BINARY、 COLLATE
可以看出不同运算符的优先级是不同的。一般情况下级别高的运算符优先进行计算如果级别相同MySQL 按表达式的顺序从左到右依次计算。
另外在无法确定优先级的情况下可以使用圆括号 () 来改变优先级并且这样会使计算过程更加清晰。