【MySQL必知必会】学习笔记Day3

2020-01-23  本文已影响0人  小小孩儿的碎碎念

【MySQL必知必会】学习笔记Day3&1.23&D8-9章&P46-61页

基本概念
6、用通配符进行过滤

(1)LIKE操作符

(2)百分号(%)通配符

SELECT  prod_id,prod_name
FROM  products
WHERE  prod_name  LIKE 'jet%';

注:

SELECT  prod_id, prod_name
FROM  products
WHERE  prod_name  LIKE '%anvil%';
SELECT  prod_name
FROM  products
WHERE  prod_name  LIKE 's%e';

注:

(3)下划线(_)通配符

SELECT  prod_id,prod_name
FROM  products
WHERE  prod_name  LIKE '_ ton anvil';

(4)使用通配符的技巧

7、用正则表达式进行搜索

(1) 正则表达式介绍

(2)使用MySQL正则表达式

(3)基本字符匹配

SELECT prod_name
FROM  products
WHERE  prod_name REGEXP '1000'
ORDER BY prod_name;
SELECT prod_name
FROM  products
WHERE  prod_name REGEXP '.000'
ORDER BY prod_name;

注:

SELECT prod_name
FROM  products
WHERE  prod_name LIKE  '1000'
ORDER BY prod_name;

SELECT prod_name
FROM  products
WHERE  prod_name REGEXP '1000'
ORDER BY prod_name;
 

注:

(4)进行OR匹配

SELECT prod_name
FROM  products
WHERE  prod_name REGEXP '1000|2000'
ORDER BY prod_name;

(5)匹配几个字符之一

SELECT prod_name
FROM  products
WHERE  prod_name REGEXP '[123] Ton'
ORDER BY prod_name;

注:

(6)匹配范围

SELECT prod_name
FROM  products
WHERE  prod_name REGEXP '[1-5] Ton'
ORDER BY prod_name;

(7)匹配特殊字符

SELECT prod_name
FROM  products
WHERE  prod_name REGEXP ' \\. '
ORDER BY prod_name;
元字符    说明
\\f      换页 
\\n      换行 
\\r      回车 
\\t      制表 
\\v      纵向制表
\\\      \

注:

(8)匹配字符类

类         说明
[:alnum:]  任意字母和数字(同[a-zA-Z0-9]) 
[:alpha:]  任意字符(同[a-zA-Z])
[:blank:]  空格和制表(同[\\t])
[:cntrl:]  ASCII控制字符(ASCII 0到31和127) 
[:digit:]  任意数字(同[0-9])
[:graph:]  与[:print:]相同,但不包括空格
[:lower:]  任意小写字母(同[a-z])
[:print:]  任意可打印字符
[:punct:]  既不在[:alnum:]又不在[:cntrl:]中的任意字符
[:space:]  包括空格在内的任意空白字符(同[\\f\\n\\r\\t\\v]) 
[:upper:]  任意大写字母(同[A-Z])
[:xdigit:] 任意十六进制数字(同[a-fA-F0-9])

(9)匹配多个实例

元字符      说明
*          0个或多个匹配
+          1个或多个匹配(等于{1,})
?          0个或1个匹配(等于{0,1}) 
{n}        指定数目的匹配
{n,}       不少于指定数目的匹配
{n,m}      匹配数目的范围(m不超过255)
SELECT prod_name
FROM  products
WHERE  prod_name REGEXP ' \\([0-9] sticks?\\)'
ORDER BY prod_name;
SELECT prod_name
FROM  products
WHERE  prod_name REGEXP '[[:digit:]]{4}'
ORDER BY prod_name;

上面的也可可以写成:

SELECT prod_name
FROM  products
WHERE  prod_name REGEXP '[0-9][0-9][0-9][0-9]'
ORDER BY prod_name;

(10)定位符

元字符     说明
^         文本的开始 
$         文本的结尾 
[[:<:]]   词的开始 
[[:>:]]   词的结尾
SELECT prod_name
FROM  products
WHERE  prod_name REGEXP '^[0-9\\.]'
ORDER BY prod_name;

注:

【MySQL必知必会】系列笔记:
【MySQL必知必会1-4章】学习笔记Day1
【MySQL必知必会5-7章】学习笔记Day2

上一篇 下一篇

猜你喜欢

热点阅读