查询第3个字符是’a’的员工信息
SELECT last_name FROM employees WHERE last_name LIKE '__a%';
查询第2个字符是_且第3个字符是’a’的员工信息:
需要使用转义字符: \
# 修改 id 为 100 的 last_name # 修改语句在后面 UPDATE employees SET last_name='A_a____' WHERE employee_id=100; SELECT last_name FROM employees WHERE last_name LIKE '_\_a%';
ESCAPE:
回避特殊符号的:使用转义符
指定 $ 为转移字符:
查询第2个字符是_且第3个字符是’a’的员工信息:
SELECT last_name FROM employees WHERE last_name LIKE '_$_a%' ESCAPE '$';
2.2.6 REGEXP \ RLIKE
REGEXP运算符用来匹配字符串,语法格式为: expr REGEXP 匹配条件 。如果expr满足匹配条件,返回1;如果不满足,则返回0。若expr或匹配条件任意一个为NULL,则结果为NULL。
- REGEXP运算符在进行匹配时,常用的有下面几种通配符:
- (1)‘^’匹配以该字符后面的字符开头的字符串。
- (2)‘$’匹配以该字符前面的字符结尾的字符串。
- (3)‘.’匹配任何一个单字符。
- (4)“[…]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”或“b”或“c”。为了命名字符的范围,使用一个‘-’。“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字。
- (5)‘*’匹配零个或多个在它前面的字符。例如,“x*”匹配任何数量的‘x’字符,“[0-9]”匹配任何数量的数字,而“”匹配任何数量的任何字符。
SELECT # 查询以 shk 开头 'shkstart' REGEXP '^shk', # 查询以 t 结尾 'shkstart' REGEXP 't$', # 查询是否包含 hk 'shkstart' REGEXP 'hk' FROM DUAL;
SELECT # 查询是否包含gu 中间任意 一个 字符 gu # 中间只能一个 'atguigu' REGEXP 'gu.gu', # 查询是否包含 a b 其中任意一个 'atguigu' REGEXP '[ab]' FROM DUAL;
3. 逻辑运算符
逻辑运算符主要用来判断表达式的真假,在MySQL中,逻辑运算符的返回结果为1、0或者NULL。
MySQL中支持4种逻辑运算符如下:
运算符 | 作用 |
NOT 或 ! | 逻辑非 |
AND 或 && | 逻辑与 |
OR 或 || | 逻辑或 |
XOR | 异或 |
3.1 逻辑非运算符
逻辑非(NOT或!)运算符表示当给定的值为0时返回1;当给定的值为非0值时返回0;当给定的值为NULL时,返回NULL。
SELECT NOT 1, NOT 0, NOT(1+1), NOT !1, NOT NULL FROM DUAL;
# 查询工资不在 6000-8000 之内的员工 SELECT last_name,salary,department_id FROM employees where salary not between 6000 and 8000;
# 查询 commission_pct 不为空的员工信息 SELECT last_name,salary,department_id,commission_pct FROM employees where commission_pct is not null; # 或 SELECT last_name,salary,department_id,commission_pct FROM employees WHERE NOT commission_pct <=> NULL;
3.2 逻辑与运算符
逻辑与(AND或&&)运算符是当给定的所有值均为非0值,并且都不为NULL时,返回1;当给定的一个值或者多个值为0时则返回0;否则返回NULL。
SELECT 1 AND -1, 0 AND 1, 0 AND NULL, 1 AND NULL; • 1
# 查询部门号为 10且20 的员工信息 SELECT last_name,salary,department_id FROM employees where department_id = 10 and department_id = 20;
# 查询部门 50 且 工资大于6000 的员工信息 SELECT last_name,salary,department_id FROM employees WHERE department_id = 50 AND salary > 6000;
3.3 逻辑或运算符
逻辑或(OR或||)运算符是当给定的值都不为NULL,并且任何一个值为非0值时,则返回1,否则返回0;当一个值为NULL,并且另一个值为非0值时,返回1,否则返回NULL;当两个值都为NULL时,返回NULL
SELECT 1 OR -1, 1 OR 0, 1 OR NULL, 0 || NULL, NULL || NULL; • 1
# 查询部门号为 10 或 20 的员工信息 SELECT last_name,salary,department_id FROM employees where department_id = 10 or department_id = 20;
注意:
OR可以和AND一起使用,但是在使用时要注意两者的优先级,由于AND的优先级高于OR,因此先对AND两边的操作数进行操作,再与OR中的操作数结合。
可以使用 ( ) 来控制执行顺序。