SQL语言学习记录-运算符
2025-07-21
运算符
# 算数运算符 + - * /(DIV) %(MOD)
# eg.筛选员工号为奇数的员工数据
SELECT * FROM employees WHERE employee_id%2 = 1;
# 比较运算符
-- 1 = '1'->(1)
-- 1 = 'a'->(0)
-- 0 = 'a'->(1)
# 字符串存在隐式转换为INT如果不可以被转换就看作为0
-- 'a' = 'b'->(0)
-- 'a' = 'a'->(1)
#不存在数字的时候就按照ANSI来比较
# NULL的特殊情况 只要存在NULL参与运算结果就是NULL
SELECT NULL=NULL FROM DUAL; ->NULL
# <=> :安全等于 可以对NULL进行判断 ,有NULL参与的运算不再是NULL结果
SELECT NULL<=>NULL FROM DUAL; ->1
SELECT 1<=>NULL FROM DUAL; ->0
#eg.查询表中commission_pct为NULL的数据
SELECT * FROM employees WHERE commission_pct <=> NULL; # 成功
SELECT * FROM employees WHERE commission_pct = NULL; # 失败没有结果
# IS NULL IS NOT NULL ISNULL
#练习:查询表中commission pct为nul1的数据有哪些
SELECT last name,salary,commission pct
FROM employees
WHERE commission_pct IS NULL;
#或
SELECT last name,salary,commission pct
FROM employees
WHERE ISNULL (commission_pct)
#练习:查询表中commission_pct不为null的数据有哪些
SELECT last name,salary,commission pct
FROM employees
WHERE commission_pct IS NOT NULL;
#LEAST()比较最小函数 GREATEST()比较最大函数ANSI比较字符串(字符串依次的ANSI作比较而不是字符串长度)
#(NOT) BETWEEN ...AND ... 范围查询函数 BETWEEN 条件1 AND 条件2 等价于 [条件1,条件2]
#(NOT) IN (SET) 在离散的值中
#LIKE:模糊查询
#%号:代表不确定个数的字符(0个,1个,或多个)
#查询last_name中包含字符'a'的员工信息 WHERE last_name LIKE '%a%';
#查询last_name中以字符'a'开头的员工信息 WHERE last name LIKE 'a%';
# _ 代表一个不确定的字符 注意(这并不是正则表达式里面的语法,使用的时候要用LIKE)
#查询第3个字符是'a'的员工信息 WHERE last_name LIKE '__a%';
# 转义字符 '_\_a%' 就代表匹配_,而不是任意字符 可以ESCAPE 自定义转义字符 '_&_a%' ESCAPE '&'
#正则表达式 REGEXP \ RLIKE
#eg.匹配以姓名H开头的员工
SELECT * FROM employees WHERE last_name RLIKE '^H';
#逻辑运算符
/*
NOT ! 非
AND && 与
OR || 或
XOR 异或
AND 的优先级高于 OR
eg. (1)AND(2)OR(3)AND(4) -> (12)OR(34)
*/
# 位运算符(数值展开为二进制来进行01的处理得出结果)
/*
&按位与 |按位或 ^按位异或 ~取反 <<左移 >>右移
在一定范围内满足向左移动一位是x2,向右移动一位是/2
4<<1 -> 8
8>>1 -> 4
*/
位运算符
& | ^ 与 或 异或

取反 ~
