2.运算符

# 运算符
# 1. 算数运算符: + - * / div % mod
SELECT 100,100+0,100-0,100+50,100+50-30,100+35.5,100-35.5 
FROM DUAL;

SELECT 100 + '1'	#结果是101  + 只表示加法运算
FROM DUAL;

SELECT 100 + 'a'  #此时将'a'看作0处理
FROM DUAL;

SELECT 100 + NULL  #NULL与任何值参与运算结果为NULL
FROM DUAL;

SELECT 100,100 * 1, 100 * 1.0,100 / 1.0, 100 / 3,100 div 0,100 / 0; #除数为0 结果为NULL

# 取模运算  a % b 结果正负与a相同
SELECT 12 % 3, 12 % 5, 12 MOD -5, -12 MOD 5, -12 %-5

# 2. 比较运算符	1为true,0为false
#  =、<=>、!=、<>、<、>、<=、>=

SELECT 1 = 2, 1 != 2 ,1 = '1',1 = 'a', 0='a' #字符串存在,隐式转换,不存在默认为0
FROM DUAL;

SELECT 'a' = 'a','a' = 'b'#两边都是字符串,不会隐式转换
FROM DUAl;

SELECT 1 = NULL,NULL = NULL #NULL参与运算,结果仍未NULL
FROM DUAL;

SELECT last_name,salary,commission_pct
FROM employees
WHERE salary = 6000;

# <=> 安全等于 有一个是NULL,等于0 都是NULL,等于1
SELECT 1 <=> NULL,NULL <=> NULL 

#查询commission_pct为NULL的情况
SELECT last_name,salary,commission_pct
FROM employees
WHERE commission_pct <=> NULL;

# 3. 关键字
# 3.1 IS NULL \ IS NOT NULL\ ISNULL()
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);

SELECT last_name,salary,commission_pct
FROM employees
WHERE commission_pct IS NOT NULL;

SELECT last_name,salary,commission_pct
FROM employees
WHERE NOT commission_pct <=> NULL;

# 3.2 LEAST() \ GREATEST() 最小 \ 最大

SELECT LEAST(1,2,3,4,5),GREATEST(1,2,3,4,5)
FROM DUAl;

SELECT LEAST(first_name,last_name)
FROM employees;

# 3.3 BETWEEN ... AND  左闭右闭
#工资在6000-8000
SELECT employee_id,last_name,salary
FROM employees
WHERE salary BETWEEN 6000 AND 8000;

SELECT employee_id,last_name,salary
FROM employees
WHERE salary >= 6000 && salary <= 8000;

SELECT employee_id,last_name,salary
FROM employees
WHERE salary >= 6000 AND salary <= 8000;

#工资不在6000-8000
SELECT employee_id,last_name,salary
FROM employees
WHERE salary NOT BETWEEN 6000 AND 8000;

SELECT employee_id,last_name,salary
FROM employees
WHERE salary < 6000 OR salary > 8000;

SELECT employee_id,last_name,salary
FROM employees
WHERE salary < 6000 || salary > 8000;

# 3.4 IN \ NOT IN
SELECT employee_id,last_name,department_id
FROM employees
WHERE department_id in (10,20,30);

SELECT employee_id,last_name,department_id
FROM employees
WHERE department_id = 10 OR department_id = 20 OR department_id = 30;

SELECT employee_id,last_name,department_id
FROM employees
WHERE department_id NOT in (10,20,30);

SELECT employee_id,last_name,department_id
FROM employees
WHERE department_id != 10 OR department_id != 20 OR department_id != 30;

# 3.5 LIKE:模糊查询
# %:代表任意多个字符 包括0
# _: 代表一个字符
# 如果所查字段中包含%或_,需要使用转义字符 \
SELECT employee_id,last_name 
FROM employees
WHERE last_name like '%a%';

SELECT employee_id,last_name 
FROM employees
WHERE last_name like '%a%e%' OR last_name like '%e%a%';

SELECT employee_id,last_name 
FROM employees
WHERE last_name like '_a%';

#第二个字符是 _,第三个字符是_
SELECT employee_id,last_name 
FROM employees
WHERE last_name like '_\_a%';

#指定字符作为转义字符 ESCAPE
SELECT employee_id,last_name 
FROM employees
WHERE last_name like '_$_a%' ESCAPE '$';

# 4.逻辑运算符
#OR || AND && NOT ! XOR(异或)不同为true
SELECT employee_id,last_name,department_id
FROM employees
WHERE department_id = 10 OR department_id = 20; 

SELECT employee_id,last_name,department_id
FROM employees
WHERE department_id = 50 AND salary > 6000; 

SELECT employee_id,last_name,salary
FROM employees
WHERE salary NOT BETWEEN 6000 AND 8000;

SELECT employee_id,salary,department_id
FROM employees
WHERE department_id = 50 XOR salary > 6000; 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迪迦敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值