如何在sql语句中使用正则表达式?

如何在sql语句中使用正则表达式~

sqlserver中,主要有regexp_like,regexp_replace,regexp_substr,regexp_instr四个正则表达式函数。
1、regexp_like:
regexp_like(x,pattern[,match_option]),查看x是否与pattern相匹配,该函数还可以提供一个可选的参数match_option字符串说明默认的匹配选项。match_option的取值如下:
'c' 说明在进行匹配时区分大小写(缺省值);
'i' 说明在进行匹配时不区分大小写;
'n' (.)点号能表示所有单个字符,包括换行(俺还不知道什么地方有用到换行.只知道sql里面可以用chr(10)表示换行、
'm' 字符串存在换行的时候当作多行处理.这样$就可匹配每行的结尾.不然的话$只匹配字符串最后的位置、
示例:
select * from emp where regexp_like(ename,'^a[a-z]*n$');
可以查找ename中以a开头以n结尾的行.例如ename为arwen或arwin或anden.但Arwen不能被匹配.因为默认是区分大小写.如果是
select * from emp where regexp_like(ename,'^a[a-z]*n$','i')
则可以查找ename为Arwen的行记录。
2、regexp_instr:
REGEXP_INSTR(x,pattern[,start[,occurrence[,return_option[, match_option]]]])用于在x中查找pattern。返回pattern在x中出现的位置。匹配位置从1开始。可以参考字符串函数 INSTR(),参数相关:
'start' 开始查找的位置;
'occurrence' 说明应该返回第几次出现pattern的位置;
'return_option' 说明应该返回什么整数。若该参数为0,则说明要返回的整数是x中的一个字符的位置;若该参数为非0的整数,则说明要返回的整数为x中出现在pattern之后 的字符的位置;
'match_option' 修改默认的匹配设置.与regexp_like里面的相同.
示例:
DECLARE
V_RESULT INTEGER ;
BEGIN
SELECT REGEXP_INSTR('hello world','o',1,1,0) INTO V_RESULT
FROM DUAL;
DBMS_OUTPUT.PUT_LINE(V_RESULT);
END;
结果为5,即字母o第一个次出现的位置。
如果regexp_instr('hello world','o',1,1,n)其中n为除0之外的整数。比如1,3。则结果为6.表示第一次出现字母o的后面一个字符的位置。
如果regexp_instr('hello world','o',1,2,0)则结果为9.表示第二次出现字母o的位置.
3、regexp_replace:
REGEXP_REPLACE(x,pattern[,replace_string[,start[,occurrence[, match_option]]]])用于在x中查找pattern,并将其替换为replae_string。可以参考字符串函数 REPLACE(),参数同REGEXP_INSTR函数
示例:
DECLARE
V_RESULT varchar2(90);
BEGIN
SELECT REGEXP_REPLACE('hello world','o','x',1,1) INTO V_RESULT
FROM DUAL;
DBMS_OUTPUT.PUT_LINE(V_RESULT);
END;
结果为hellx world.
如果REGEXP_REPLACE('hello world','o','x'),则结果为hellx wxrld.
如果 REGEXP_REPLACE('hello world','o','x',1,2)则结果为hello wxrld.
4、regexp_substr:
REGEXP_SUBSTR(x,pattern[,start[,occurrence[, match_option]]])用于在x中查找pattern并返回。可以参考字符串函数 SUBSTR(),参数同REGEXP_INSTR函数.
例如:
DECLARE
V_RESULT VARCHAR2(255);
BEGIN
SELECT REGEXP_SUBSTR('hello world','l{2}') INTO V_RESULT
FROM DUAL;
DBMS_OUTPUT.PUT_LINE(V_RESULT);
END ;
结果为ll
查询到匹配的字符串才返回匹配的字符.没查到就返回空。

SQL Server数据中运算符与表达式

sqlserver中,主要有regexp_like,regexp_replace,regexp_substr,regexp_instr四个正则表达式函数。

1、regexp_like:

regexp_like(x,pattern[,match_option]),查看x是否与pattern相匹配,该函数还可以提供一个可选的参数match_option字符串说明默认的匹配选项。match_option的取值如下:

'c'   说明在进行匹配时区分大小写(缺省值);

'i'   说明在进行匹配时不区分大小写;

'n'   (.)点号能表示所有单个字符,包括换行(俺还不知道什么地方有用到换行.只知道sql里面可以用chr(10)表示换行、

'm'   字符串存在换行的时候当作多行处理.这样$就可匹配每行的结尾.不然的话$只匹配字符串最后的位置、

示例:

select * from emp where regexp_like(ename,'^a[a-z]*n$');

可以查找ename中以a开头以n结尾的行.例如ename为arwen或arwin或anden.但Arwen不能被匹配.因为默认是区分大小写.如果是

select * from emp where regexp_like(ename,'^a[a-z]*n$','i')

则可以查找ename为Arwen的行记录。

2、regexp_instr:

REGEXP_INSTR(x,pattern[,start[,occurrence[,return_option[, match_option]]]])用于在x中查找pattern。返回pattern在x中出现的位置。匹配位置从1开始。可以参考字符串函数 INSTR(),参数相关:

'start'   开始查找的位置;

'occurrence'   说明应该返回第几次出现pattern的位置;

'return_option'   说明应该返回什么整数。若该参数为0,则说明要返回的整数是x中的一个字符的位置;若该参数为非0的整数,则说明要返回的整数为x中出现在pattern之后   的字符的位置;

'match_option'   修改默认的匹配设置.与regexp_like里面的相同.

示例:

DECLARE     

V_RESULT INTEGER ;    

BEGIN     

SELECT  REGEXP_INSTR('hello world','o',1,1,0) INTO  V_RESULT    

FROM  DUAL;    

DBMS_OUTPUT.PUT_LINE(V_RESULT); 

END;

结果为5,即字母o第一个次出现的位置。

如果regexp_instr('hello world','o',1,1,n)其中n为除0之外的整数。比如1,3。则结果为6.表示第一次出现字母o的后面一个字符的位置。

如果regexp_instr('hello world','o',1,2,0)则结果为9.表示第二次出现字母o的位置.

3、regexp_replace:

REGEXP_REPLACE(x,pattern[,replace_string[,start[,occurrence[, match_option]]]])用于在x中查找pattern,并将其替换为replae_string。可以参考字符串函数 REPLACE(),参数同REGEXP_INSTR函数

示例:

DECLARE     

V_RESULT varchar2(90);    

BEGIN     

SELECT  REGEXP_REPLACE('hello world','o','x',1,1) INTO  V_RESULT    

FROM  DUAL;    

DBMS_OUTPUT.PUT_LINE(V_RESULT); 

END;

结果为hellx world.

如果REGEXP_REPLACE('hello world','o','x'),则结果为hellx wxrld.

如果 REGEXP_REPLACE('hello world','o','x',1,2)则结果为hello wxrld.

4、regexp_substr:

REGEXP_SUBSTR(x,pattern[,start[,occurrence[, match_option]]])用于在x中查找pattern并返回。可以参考字符串函数 SUBSTR(),参数同REGEXP_INSTR函数.

例如:

DECLARE        

V_RESULT VARCHAR2(255);      

BEGIN       

SELECT  REGEXP_SUBSTR('hello world','l{2}') INTO  V_RESULT       

FROM  DUAL;             

DBMS_OUTPUT.PUT_LINE(V_RESULT);           

END ;

结果为ll

查询到匹配的字符串才返回匹配的字符.没查到就返回空。



sql语句 怎么用 正则表达式 查询 一个 符合 “-” 加数字 的字短? 如...
答:select * from tba where b like '-[0-9]'or b like '-[0-9][0-9]' or b like '-[0-9]%[0-9]'--- select * from abc where b like '-[0-9]'or ---匹配:'-'加单数字 b like '-[0-9][0-9]' or ---匹配:'-'加双数字 b like '-[0-9]%[0-9]' -...

sql 实现正则表达式
答:若要查阅非系统表的所有对象,请使用 NOT LIKE 'sys% '。如果共有 32 个对象且 LIKE 找到 13 个与模式匹配的名称,则 NOT LIKE 将找到 19 个与 LIKE 模式不匹配的对象 三 使用escape字句的模式匹配 可搜索包含一个或多个特殊通配符的字符串。

如何在SQL Server中使用正则表达式
答:1: /// 2: /// Regs the ex match.3: /// 4: /// The input value. 5: /// The regex pattern. 6: /// <remarks>Author: Petter Liu http:// wintersun.cnblogs.com </remarks> 7: /// <returns>1 match,0 not match</returns> 8: [SqlFun...

SQL Server 2008 R2如何使用正则表达式搜索
答:使用正则表达式进行查找若要在“快速查找”、“在文件中查找”、“快速替换”或“在文件中替换” 操作过程中,在“查找内容”字段启用正则表达式,请在“查找选项”下选中“使用”,再选择“正则表达式”。“查找内容”字段旁边的“引用列表”三角形按钮将变为可用状态。单击此按钮可显示一组最常用的正则表达式。如果选择...

SQL中可用正则表达式不
答:SQL中不能用正则表达式,但是可以用like来匹配关键字

sql中的select语句用正则表达式如何写?select name from employee where...
答:如果是 mysql 的话请用 rlike 或 regexp:SELECT 'aXbc' REGEXP '[a-dXYZ]'; -> 1 SELECT 'aXbc' REGEXP '^[a-dXYZ]$'; -> 0 SELECT 'gheis' REGEXP '^[^a-dXYZ]+$'; -> 1 SELECT 'gheisa' REGEXP '^[^a-dXYZ]+$'; -> 0 SELECT 'aXbc' RLIKE '[a-...

如何在SQL Server中使用正则表达式
答:SQL中不能使用正则表达式,但是可以使用通配符来达到类似效果 1 % 包含零个或更多字符的任意字符串 示例:WHERE title LIKE '%computer% ' 将查找处于书名任意位置的包含单词 computer 的所有书名。2 _(下划线) 任何单个字符 示例:WHERE au_fname LIKE '_ean...

mysql 怎么使用正则表达式
答:正则表达式的模式字符 ^ 匹配字符开始的部分 eg1: 从info表name字段中查询以L开头的记录 select * from info where name regexp '^L';eg2: 从info表name字段中查询以aaa开头的记录 select * from info where name regexp '^aaa';匹配字符结束的部分 eg1: 从info表name字段中查询以c结尾的记录 ...

正则表达式,从sql语句中匹配主键,外键,主键表名
答:1.不为空 create table emp_02 (col number,col1 varchar(20) not null,col2 varchar(20) constraint emp_not_null not null )2.unique create table emp_02 (col number,col1 varchar(20) unique,col2 varchar(20),constraint emp_unique unique(col2))3 primary key create table emp_03...

求一SQL语句的正则表达式
答:like '1[2345]'or = '20'sql的支持的模糊查询正则功能很弱的 如果你要查id为15~20的记录,直接用select就能完成 where id >= 15 and id <= 20 或者bewteen 如果是前15~20条记录,用 select top 6 from (select top 20 from table order by desc)t ...

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网