用正则表达式进行搜索
正则表达式是用来匹配文本的特殊的串(字符集合),正则表达式的作用是匹配文本,将一个模式(正则表达式)与一个文本串进行比较
1)检索列prod_name包含文本1000的所有行
SELECT prod_name
FROM products
WHERE prod_name REGEXP ‘1000’
ORDER BY prod_name;
2)
SELECT prod_name
FROM products
WHERE prod_name REGEXP ‘.000’
ORDER BY prod_name;
3)|为正则表达式的OR操作符,它表示匹配其中之一,使用|从功能上类似于在SELECT语句中使用OR语句,多个OR条件可并入单个正则表达式
SELECT prod_name
FROM products
WHERE prod_name REGEXP ‘1000|2000’
ORDER BY prod_name;
4)[123]定义一组字符,它的意思是匹配1或者2或者3,因此,1 ton 和2 ton都匹配且返回(没有 3 ton),[123] Ton为[1|2|3] Ton的缩写
SELECT prod_name
FROM products
WHERE prod_name REGEXP ‘[123] Ton’
ORDER BY prod_name;
MySQL假定你的意思是‘1’或‘2’或‘3 ton’,除非你把字符|括在一个集合中,否则它将应用于整个串
SELECT prod_name
FROM products
WHERE prod_name REGEXP ‘1|2|3 Ton’
ORDER BY prod_name;
[^123]匹配除这些字符外的任何东西
5)
SELECT prod_name
FROM products
WHERE prod_name REGEXP ‘[1-5] Ton’
ORDER BY prod_name;
6).匹配任意字符,因此每个行都被检索出来
SELECT vend_name
FROM vendors
WHERE vend_name REGEXP ‘.’
ORDER BY vend_name;
为了匹配特殊字符,必须用\为前导。\-表示查找-,\.表示查找.
SELECT vend_name
FROM vendors
WHERE vend_name REGEXP ‘\.’
ORDER BY vend_name;
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\.]’
ORDER BY prod_name;