Java教程

03.SQL运算符

本文主要是介绍03.SQL运算符,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

算数运算符

算数运算符包括 +、-、*、/或者DIV、%或者MOD

  • 注意:Java中可以进行字符串的拼接,但是SQL没有这种自动拼接需要使用函数
# java中 100 + "a" => '100a'
# sql 中 100 + 'a' => 100 (计算过程中将字符串看成0)
  • null参与计算,结果为null
# 1 + null => null
  • 除法运算或者取模运算(%或者MOD)中分母为0,结果为null
# 12 % 0 => null
# 12 / 0 => null
  • 取模运算中结果的符号与分子符号保持一致
# 12 % 5 => 2
# 12 % -5 => 2
# -12 % 5 => -2
# -12 % -5 => -2
  • 除法运算中,结果默认是double类型(这里无论是否整除)
# 100 / 2 = 50.00000

image-20220309005702021

比较运算符

比较运算符包括 =、<=>、<>、!=、<、<=、>、>=
其中和常见的不同的是安全等于<=>、不等于<>

# <=>安全等于可以用来进行判断null
SELECT 1=null,1<=>null,1!=null, 1<>null;
# 不等于<>等同于!=

image-20220309010135997

最大最小值

最大LEAST()

最小GRLEAST()

# 最大可以比较数值或者字典序 LEAST('g', 'b', 't', 'm') => 'b'
# 最小可以比较数值或者字典序 GRLEAST('g', 'b', 't', 'm') => 't'

Between and

# between and 表示范围值,包括两个边界
# between 6000 and 8000 => [6000,8000]
# NOT between 6000 and 8000

# 工资在6000~8000的人id
SELECT employee_id,salary FROM employees WHERE employees.salary BETWEEN 6000 AND 8000;

# 工资不在在6000~8000的人id
SELECT employee_id,salary FROM employees WHERE employees.salary NOT BETWEEN 6000 AND 8000;

image-20220309010907604

image-20220309010919070

NOT in set

# where id IN (10,20,30); 
# => where id = 10 or id = 20 or id = 30;
# 查询部门编号是10、20、30的人id
SELECT employee_id,department_id FROM employees WHERE employees.department_id in (10, 20, 30);
SELECT employee_id,department_id FROM employees WHERE employees.department_id=10 or employees.department_id=20 or employees.department_id=30;

# 不能写成这样 SELECT employee_id,department_id FROM employees WHERE employees.department_id=10 or 20 or 30;
# 因为先计算id=10 or 20 or 30 相当于 id=10 || 1 || 1 结果为1

Like模糊查询

模糊查询使用Like关键词,%表示匹配不确定个数的字符(可以为0个),#表示匹配一个确定字符

# %的用法
# 查找first_name中包含a的id和first_name
SELECT employee_id,first_name FROM employees WHERE employees.first_name LIKE '%a%';

image-20220310002840663

# _的用法
# 查找first_name第二个字母为a的id和first_name
SELECT employee_id,first_name FROM employees WHERE employees.first_name LIKE '_a%';

image-20220310002954144

# _与%结合使用
Like '__a%'; => 可以匹配eea
# 如果需要匹配_与%特殊字符,可以用转义字符
Like '_\_a'; => 可以匹配 e_a
# 或者指定转义字符,这里指定&为转义字符
Like '_$_a' ESCAPE '$'

正则表达式

关键字为REGEXP或者是RLIKE

# ^字符 表示以该字符开头
# 字符$ 表示以该字符结束
# [ab] 表示a或者b
# .	匹配除换行符(\n、\r)之外的任何单个字符,相等于 [^\n\r]
# 与通用的正则表达式同
SELECT 'shkstart' REGEXP '^shk', 'shkstart' REGEXP 't$', 'shkstart' REGEXP 'hk'
FROM DUAL;
SELECT 'atguigu' REGEXP 'gu.gu','atguigu' REGEXP '[ab]'
FROM DUAL;

逻辑运算符

常见的逻辑运算符有

# OR 或者是 ||
# AND 或者是 &&
# NOT 或者是 !
# NOR(异或)
# 注意: 逻辑运算优先级 NOT > AND > XOR > OR
# 优先级高的先运算

位运算符

常见的按位运算符

# 按位与 &
# 按位或 |
# 按位异或 ^
# 按位取反 ~
# 右移 >>
# 左移 <<

运算符优先级

重要的事情说三遍:运算带上括号,不然就得看运算符优先级

优先级由低到高排列 运算符
1 =(赋值运算)、:=
2 II、OR
3 XOR
4 &&、AND
5 NOT
6 BETWEEN、CASE、WHEN、THEN、ELSE
7 =(比较运算)、<=>、>=、>、<=、<、<>、!=、 IS、LIKE、REGEXP、IN
8 |
9 &
10 <<、>>
11 -(减号)、+
12 *、/、%
13 ^
14 -(负号)、〜(位反转)
15 !
这篇关于03.SQL运算符的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!