MySQL-02-运算符
DUAL 表
Dual 是一个为了满足 SELECT xxx FROM xxx
这样格式的一个虚拟的表,可以当做一个表名字来用,如:
SELECT 1+1 FROM DUAL
;
但其实 MySQL 中,不加 FROM xxx
也可以返回对应的运行结果。
算术运算符
这些都是最基本的算术运算符,可以在 MySQL 中直接使用。其计算结果会作为一个新的列。
1 | SELECT PASSWORD+1 FROM `User`; |
结果是:
1 | password+1 |
比较运算符
比较运算符用来对表达式左边的操作数和右边的操作数进行比较,比较的结果为真则返回 1 ,比较的结果为假则返回 0 ,其他情况则返回 NULL。
比较运算符经常被用来作为 SELECT 查询语句的条件 来使用,返回符合条件的结果记录。
= 比较判断规则
1 表示 true,0 表示 false。
- 在使用等号运算符时,遵循如下规则:
- 如果等号两边的值、字符串或表达式都为字符串,则 MySQL 会按照字符串进行比较,其比较的是每个字符串中字符的 ANSI 编码是否相等。
- 如果等号两边的值都是整数,则 MySQL 会按照整数来比较两个值的大小。
- 如果等号两边的值一个是整数,另一个是字符串,则 MySQL 会将字符串转化为数字进行比较。
- 如果等号两边的值、字符串或表达式中有一个为 NULL,则比较结果为 NULL。
特殊情况:
- 字符数字和数字比较:
SELECT "20" > 10;
返回的是 1,也就是将字符串转化为数字。 - 字符字母和数据比较:
SELECT "abc" = 0;
返回的是 1,永远是 1. - 比较一方为 NULL:
SELECT NULL = 0;
返回 NULL。
<=> 安全等于运算符
和 = 基本一样,不同的是,对于含有 NULL 的比较,不在返回 NULL。这样相对来说更加安全一点。
- NULL 和 NULL 比较,返回 1:
SELECT NULL <=> NULL; 1
- NULL 和非 NULL 比较,返回 0:
SELECT NULL <=> "NULL"; 0
<> != 不等于运算符
不等为 1,相等为 0。如果运算一方含有 NULL,则结果为 NULL。
其他非符号运算符
A is NULL
判断 A 是否为 NULL,等价于:
1 | WHERE A IS NULL; |
A is not NULL
判断 A 是否不是 NULL:
1 | WHERE A IS NOT NULL; |
A between B and C
B 和 C 需要是相同种类的区间。
in (A,B,C) | not in (A,B,C)
在 A B C 范围内。
A like “Exp”
like 用于进行模糊匹配,有两种符号可以使用:
- 可以用 % 来模糊任意个字符
- 可以用 _ 下划线,来之模糊下划线部位单个字符。
符合匹配返回 1,不符合返回 0。如果参与匹配的字符串为 NULL,则返回 NULL:
SELECT NULL LIKE "%NULL%"
返回 NULL。
A regexp “Exp”
加强版本的 like,支持完整的正则表达式!
逻辑运算符
有 AND OR XOR NOT 四种逻辑运算。可以和上面的逻辑比较结果进行逻辑运算。
运算优先级
() 优先级最高,不知道怎么写就加括号就行了。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Xorex!
评论