mysql 正则表达式
一、建立测试表:
CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, `age` int(3) DEFAULT NULL, `birth` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8
二、通过内置函数完成字符串到日期的转化:
在mysql里面利用str_to_date()把字符串转换为日期。
MySQL内置函数实例:
分隔符一致,年月日要一致
- select str_to_date('02/25/1998 12:00:34 AM','%m/%d/%y %h:%i:%s %s') as column_name from table_name;
- str_to_date('08/09/2008', '%m/%d/%Y'); -- 2008-08-09
- str_to_date('08/09/08' , '%m/%d/%y'); -- 2008-08-09
- str_to_date('08.09.2008', '%m.%d.%Y'); -- 2008-08-09
- str_to_date('08:09:30', '%h:%i:%s'); -- 08:09:30
- str_to_date('08.09.2008 08:09:30', '%m.%d.%Y %h:%i:%s'); -- 2008-08-09 08:09:30
三、基于正则表达式的实现:
-- 模糊查询 _ 匹配一个字符 SELECT * FROM test WHERE NAME LIKE '_a%'; /* 使用正则表达式配置所用name中带有a 的人员信息,和like功能基本一样 */ SELECT NAME ,id,age ,birth FROM test WHERE NAME REGEXP 'a'; -- like的实现 SELECT NAME ,id,age ,birth FROM test WHERE NAME LIKE '%a%'; /* .配置任意字符 */ SELECT NAME ,id,age ,birth FROM test WHERE age REGEXP '1.3'; -- like的实现 SELECT NAME ,id,age ,birth FROM test WHERE age LIKE '%1_3%'; /* 比较复杂的正则表达式实现, like和正则表达式都不区分大小写,只需要加上 binary 即可 */ SELECT NAME ,id,age ,birth FROM test WHERE NAME REGEXP 'J.tt.'; -- 区分大小写的正则表达式, SELECT NAME ,id,age ,birth FROM test WHERE NAME REGEXP BINARY 'J.tt.'; SELECT NAME ,id,age ,birth FROM test WHERE NAME REGEXP 'J.tt.'; -- like的实现 SELECT NAME ,id,age ,birth FROM test WHERE NAME LIKE '%J_tt_%'; -- 区分大小写的like实现 SELECT NAME ,id,age ,birth FROM test WHERE NAME LIKE BINARY '%j_tt_%';
/* 使用复杂的正则表达式实现 */ SELECT * FROM test WHERE age REGEXP '12|32';

/* [:digit:]匹配任意数字 ,{3}表示其前面必须出现的字符的个数,可以是4,5.。更多的位数 意思是:匹配大于等于两位的数字 */ SELECT * FROM test WHERE age REGEXP '[[:digit:]]{2}';

[:a;num:] 任意字母和数字(同 [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\\t\\r\\v])
[:upper:] 任意大小字母(同 [A-Z])
[:xdigit:] 任意十六进制数字(同 [a-fA-F0-9])
匹配多个实例
元字符 说明
* 0个或多个匹配
+ 1个或多个匹配(等于 {1, })
? 0个或1个匹配(等于 {0, 1})
{n} 指定数目的匹配
{n, } 不少于指定数目的匹配
{n ,m} 匹配数目的范围(m不超过255)
定位符
^ 文本的开始
$ 文本的末尾
[[:<:]] 词的开始
[[:>:]] 词的结尾



浙公网安备 33010602011771号