----===============Oracle正则表达式(regularexpression)=================
/*
在oracle里正则表达式有四个函数可用,分别是regexp_like、regexp_substr、regexp_instr 和regexp_replace。
这里在我们oracle 10g里灵活应用。
先来简单介绍一下正则表达式的内容,正则表达式是做为快速查询的文本内容的,在linux应用比较多,
首先,行的起始与结束 “^”这个字符是表示只查找行首的内容。“$”这个字符只查找行末的内容。
接下来是“^”还可以做为一个排除字符来使用。还是使用例子来做一个演示比较明了一下。
*/
这里我使用regexp_like这个函数来做,这样可以我们平时会使用的比较多。
select * from test_table where regexp_like(field_1,'^1234');
这个就是表示是以1234打头的字符串是不是有匹配的。这里和like的方式是一样的。
select * from test_table where regexp_like(field_1,'^[12]234');
这里多了一个[]这里做一个独立字符,这里表示是以1或2开始,并且接着是234这个里的字符就会是匹配的。
select * from test_table where regexp_like(field_1,'^(欧阳|李)小二');
这里我们就可以表达,这个查询一个姓是欧阳或李的,名字叫小二的字符串。
这里多了一个()这个是做一个为字符串的方式来写的与[]刚好是对应。这里还有一个“|”来表示或的意思。
select * from test_table where regexp_like(field_1,'^李[小]*二');
这里我们就可以查询李小二或是李二,再或者是李小小二,都可以,这里我们需要讲一下是[]后面带了一个*,
这个是表示0~无穷大 字符去匹配。这个[]我们还可以添加一个“+”来表示1~无穷大的字符去匹配,
也可以更加精准一些,在[]后面{1,3}这里就是表示1个到3个相同字符的匹配。还有一个“?”来说表示1或是0个。
select * from test_table where regexp_like(field_1,'李[^小]二');
这里我们可以查询到姓李的,但是第二字不是“小”这个字。
select * from test_table where regexp_like(field_1,'[0-9]');
这里是表示我们查询字符串含有0-9的数字的字符串。
select * from test_table where regexp_like(field_1,'[a-z]');
这里是表示我们查询字符串含有a-z的小写字母的字符串。
select * from test_table where regexp_like(field_1,'[A-z]');
这里是表示我们查询字符串含有A-z的所有字母的字符串。
select * from test_table where regexp_like(name,'[[:alpha:]]');
这里是表示查询匹配任意字母,也包括中文字。
select * from test_table where regexp_like(name,'[[:alnum:]]');
这里是表示查询匹配任意字母和数字。
select * from test_table where regexp_like(name,'[[:digit:]]');
这里是表示查询匹配任意数字。
Select * from test_table Where regexp_like(name,’of’,’i’);
这里就是of不区分大小写。
Select * from test_table Where regexp_like(name,’^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$’);
这样我们可以查询是不是ip格式