Toggle navigation
首页
问答
IT问答
生活问答
电脑知识
百科
测评
sql server肿么使用正则表达式
发布于2022-01-12 21:48:14
4
个回答
网友回答
2022-01-12
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' 字符串存在换行的时候当作多行处理.这样$就可匹配每行的结尾.不然的话$只匹配字符串最后的位置、
示例:
1
select * from emp where regexp_like(ename,'^a[a-z]*n$');
可以查找ename中以a开头以n结尾的行.例如ename为arwen或arwin或anden.但Arwen不能被匹配.因为默认是区分大小写.如果是
1
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里面的相同.
示例:
1
2
3
4
5
6
7
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函数
示例:
1
2
3
4
5
6
7
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函数.
例如:
1
2
3
4
5
6
7
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
查询到匹配的字符串才返回匹配的字符.没查到就返回空。
网友回答
2022-01-12
可以用的
~~~~~~~
网友回答
2022-01-12
就是将形如 文件名_n_,改名为 文件名_3n_,的形式吗
查找正则表达式:(.+_)(\d+_.+)
替换正则表达式:$1 3$2
也可推荐试试 文件批量处理百宝箱V8.0中有关批量更名的功能。
网友回答
2022-01-12
日文系统下无法实现!打出来的全是羊角的符号!
IT问答最新文章
1
想给妈妈买一个手机 诺基亚1000左右的 直板的 我看C5-00还不错 不知道停产没 还有没有性价比比较高的?
2
组装一台电脑买cpu英特尔i59400f还是锐龙r3500x?
3
普通电脑安装英特尔快速储存技术有用吗?
4
Mac电脑明年会放弃英特尔处理器吗?
5
Intel核芯显卡性能强吗
6
电脑已经卡住了 怎么保存文件 在没重启之前
7
在爱奇艺客户端上可不可以同时用多个终端(多台电脑或手机)登陆?
8
请问我的电脑是日本 nec进不去了,屏幕只显示nec,哪位大哥告诉我一下,怎么回事啊
9
貂王手写板W—S1100的驱动那里有??急急急急
10
请高手评价下这台NEC笔记本值多少钱?
相关阅读
1
SQL server 2000 附加.MDF数据时 选择.MDF文件路径时会出现另一个程序正在使用此文件,进程没法进行。
2
我想安装SQL Server,可是安装时电脑提示没有实例,肿么安装实例??
3
sql server肿么使用正则表达式
4
sql server 2008 肿么使用存储过程
5
金羚洗衣机怎么样按到脱水,每次选完脱水后它就直接跳回洗涤,这是闹到哪一出··按了一天了都···
6
怎么完全删除电脑中cad的残留文件
回到
顶部