从头开始学MySQL--------算术运算(3)
5.3.2 算术运算符
保留4位小数。如果除以的是0,那么返回的是NULL。
DROP TABLE IF EXISTS t_operation;
CREATE TABLE t_operation
(
number INT
);
INSERT INTO t_operation(number) VALUES(10);
SELECT
number A,
number+10 B,
number-10 C,
number*2 D,
number/2 E,
number/7 F,
number/0 G
FROM
t_operation;
5.3.3 比较运算符
(1)等于运算符
比较运算符的返回值是0或者1,与NULL运算的结果是NULL。
等于运算符‘=’运算规则:
(1)数字与字符串比较的话,字符串会被转换为数字。
(2)任何与NULL进行‘=’运算的表达式,返回值都是NULL。
(3)两边都是字符串的话,就按照字符串进行比较。
在MySQL中,可以把返回值返回给MyBatis框架,用Boolean接收即可。
另外我尝试在Qracle中运行此SQL语句,发现不可以运行通过:
[SQL]SELECT 1 = 1
[Err] ORA-00923: FROM keyword not found where expected
SELECT 1=1 , '2'=2 , 1=null ,4=5
(2)安全等于运算符( <=>)
几乎与'='运算一致,区别是 '<=>' 能用来对NULL进行判断,若两者均为NULL,则返回1,否则返回0。
注:在Mysql中,因为与null进行算数运算均返回NULL,所以才引入了 <=>
(3)不等于运算符 <>或者是 !=
用于判断字符串、数字。如果不等于,返回1。如果等于,返回0。如果有NULL进入运算,返回NULL。
(4)其它的大于等于,小于等于等运算符,都一样。且均不能用于判断空NULL,若有NULL进入运算,则返回NULL。
(5)空相关。语法: A IS NULL 、 B IS NOT NULL 、 ISNULL(C);
SELECT
sex,
name,
sex IS NULL,
name IS NOT NULL,
ISNULL(sex)
FROM t_char
(6)BETWEEN AND 运算符
数字在某个区间,字母按照字母表顺序比较。若运算中出现NULL,则返回NULL。
在区间内返回1,不在区间返回0
SELECT
1 BETWEEN 0 AND 10 resultA,
'f' BETWEEN 'a' AND 'z' resultB
;
(7)LEAST(值1,值2,值3,...,值n)
返回最小值。有空返回NULL,如果是字符串与数字,那么就返回0。
SELECT
LEAST(2,3,4) resultA,
LEAST('a','b','c') resultB,
LEAST(null,2,3) resultC,
LEAST(2,3,'a') resultD
;
(8)GREATEST 用于与LEAST一样,但是取得是最大值。
(9) IN ()、 NOT IN() 。
在的话,返回1,不在返回0。若IN左侧为NULL或者括号里有NULL,则返回NULL。
SELECT
'a' in ('a','b','c') resultA,
0 in ('a',0) resultB,
4 in (1 ,2 ,3) resultC
;
(10)LIKE
可以使用以下两种通配符
'%'表示匹配一切。 'a%',表示以a开头的任意字符串。 '%a',表示以a结尾的任意字符串。 ‘%a%’,表示包含a的字符串。
'_'表示匹配一个字符。 'a_',匹配以a开头的两位字符串,例如'ab'、'ac'。 'a___'(3个空格),匹配a开头的长度为4的字符串。
SELECT
'a' LIKE '%a%',
'abc' LIKE 'a__',
'abc' LIKE 'a_' ,
'abc' LIKE 'ab_'
;
(11)REGEXP
MySQL提供了正则功能。
(1)'^a' 匹配以a开头的字符串
(2)'a$' 匹配以a结尾的字符串
(3)'。' 匹配任何一个单词
(4)'【abc】'匹配字符串中含有 a或b或c 的字符串
(5)'【a-z】' 匹配从字符a到字符z中任意一个字符的字符串 【0-9】匹配任何数字
(6)' * '匹配零个或多个在它前面的字符。例如 x* 匹配任何数量的x字符。【0-9】*匹配任何数量的数字。
例如
SELECT
'ssky' REGEXP '^s',
'ssky' REGEXP '$y',
'ssky' REGEXP '.sky',
'ssky' REGEXP '[ab]'
;
5.3.4 逻辑运算符
NOT 或者 ! ,逻辑非。 ! 0 或者 NOT 0 返回 1。 操作非零数字,返回0。有NULL返回NULL。
AND 或者 && 与 NOT 相反。只要有0,返回0。 0 || NULL 返回0。
OR 或者 || 有非零的数字返回1。 1 || NULL 返回1。 0||NULL 返回NULL。
XOR 异或 A XOR B 相当于 ! A && B
SELECT
1 || NULL,
0 || NULL,
1 && NULL,
0 && NULL,
!NULL
;
阅读更多
.