#1. 算术运算符:+ — * / div % mod
SELECT 100, 100 + 0,100 - 0,100 + 50,100 - 50 * 30,100 + 30.4,100 - 35.5,100 - 0.0
FROM dual;
#在SQL中,+没有连接的作用,就表示加法运算。此时会将字符串转换为数值(隐式转换)
SELECT 100 + '1' #在java中结果是1001.
FROM DUAL;
SELECT 100 + 'a' #结果为100,此时将'a'看做0来处理
FROM DUAL;
SELECT 100 + NULL #NULL值参与运算结果为空
FROM DUAL;
SELECT 100,100 * 1,100 * 1.0,100 / 1.0,100 / 2,
100 + 2 * 5 / 2,100 /3 , 100 DIV 0 #分母如果为0,结果就为NULL
FROM DUAL;
#取模(即取余)运算: % mod
#取模的结果的正负号与被模数一样
SELECT 12 % 3,12 % 5,12 MOD -5,-12 % 5,-12 % -5
FROM DUAL;
#练习:查询员工ID为偶数的员工信息
SELECT employee_id,last_name,salary
FROM employees
WHERE employee_id % 2 = 0;
#2. 比较运算符
#2.1 = <=> <> != < <= > >=
SELECT 1 = 2,1 != 2,1 = '1',1 = 'a',0 = 'a' #字符串存在隐式转换。如果转换数值不成功,则看做0
FROM DUAL;
SELECT 'a' = 'a','ab' = 'ab','a' = 'b' #如果等号两边都是字符串,MySQL比较的是字符对应的ANSI编码是否相等
FROM DUAL;
SELECT 1 = NULL,NULL = NULL #只要有null参与判断,结果就为null
FROM DUAL;
SELECT last_name,salary
FROM employees
#WHERE salary = 6000;
WHERE commission_pct = NULL; #此时执行,不会有任何结果,因为null参加了判断,结果不会有1出现,也就不会返回任何结果
#<=> : 安全等于
#安全等于运算符和等于运算符的作用是相似的,唯一的区别是<=>可以对null进行判断
#在两个操作数均为NULL时,其返回值为1,而不为NULL;当一个操作数为NULL时,其返回值为0,而不为NULL
SELECT last_name,salary
FROM employees
WHERE commission_pct <=>NULL; #此时返回结果就是72条
#2.2
#IS NULL \ IS NOT NULL \ ISNULL
#练习:查询表中commission_pct 为null的数据有哪些
SELECT last_name,salary,commission_pct
FROM employees
WHERE commission_pct IS NULL;
#IN 运算符
#IN 运算符用于判断给定值是否是IN列表中的一个值,如果是则返回1,否则返回0.
#如果给定的值为NULL,或者IN列表中存在NULL,则结果为NULL
SELECT 'a' IN ('a','b','c'),1 IN (2,3),NULL IN ('a','b'),'a' IN ('a',NULL);
#NO in 运算符
#用于判断给定的值是否不是IN列表中的一个值,如果不是IN列表中的一个值,则返回1,否则返回0。
SELECT 'a' NOT IN ('a','b','c'),1 NOT IN (2,3);
#LIKE 运算符
#用于匹配字符串,通常用于模糊匹配,如果满足条件则返回1,否则返回0.
#如果给定的值或者匹配条件为NULL,则返回结果为NULL
#"%":匹配0个或者多个字符
#"_":只能匹配一个字符
SELECT NULL LIKE 'abc','abc' LIKE NULL;
SELECT first_name
FROM employees
WHERE first_name LIKE 'S%';
SELECT last_name
FROM employees
WHERE last_name LIKE '_o%';
#ESCAPE 回避特殊符号的:使用转义字符。
#例如:将[%]转为[$%]、[]转为[$],然后再加上[ESCAPE'$']即可
SELECT job_id
FROM jobs
WHERE job_id LIKE 'IT\_%';
04运算符
最新推荐文章于 2024-07-10 00:01:48 发布