sqlserver 正则函数
来源:互联网 发布:arduino 单片机 区别 编辑:程序博客网 时间:2024/06/03 04:26
参考许多资料,终于在SQLSERVER中通过函数实现正则,虽然没有编程灵活,但胜在方便简单,拿来就能用。
此函数主要用于网页,中间匹配的多个用<br>分开,可根据需要自己定义。
create FUNCTION [dbo].[regexMatch]
(@string text, --需要匹配的源字符串
@pattern varchar(1000) --正则表达式 如 <cellname>([^<>]*)\<\/cellname>|<text>([^<>]*)\<\/text>
--@ignorecase bit = 0 --是否区分大小写,默认为false
)
RETURNS nvarchar(max)
AS
BEGIN
DECLARE @objRegex INT, @retstr varchar(8000)='',@tcount int,@useint int=0
DECLARE @objMatchCollection INT,@objMatch int,@mstr varchar(1000)
--创建对象
EXEC sp_OACreate 'VBScript.RegExp', @objRegex OUT
--设置属性
EXEC sp_OASetProperty @objRegex, 'Pattern', @pattern
EXEC sp_OASetProperty @objRegex, 'IgnoreCase', 0
EXEC sp_OASetProperty @objRegex, 'Global', 1
--执行
EXEC sp_OAMethod @objRegex, 'Execute', @objMatchCollection OUT, @string
EXEC sp_OAGetProperty @objMatchCollection, 'Count', @tcount out
while @useint<@tcount
begin
EXEC sp_OAMethod @objMatchCollection , 'Item', @objMatch OUT,@useint
EXEC sp_OAGetProperty @objMatch, 'Value', @mstr out
set @retstr+=@mstr+'<br>'+char(13)
set @useint+=1
end
--释放
EXECUTE sp_OADestroy @objRegex
EXECUTE sp_OADestroy @objMatchCollection
EXECUTE sp_OADestroy @objMatch
-- RETURN @tcount
RETURN @retstr
END
/*
--使用时需要开启对OLE存储过程的使用:
exec sp_configure 'Ole Automation Procedures', 1 reconfigure
--在设置此配置时有可能会提示“配置选项'Ole Automation Procedures' 不存在,也可能是高级选项。”的错误,解决办法是在配置之前执行语句:
exec sp_configure 'show advanced options',1 reconfigure
*/
使用示例
select dbo.[regexMatch]('<emr>
<inp_info chineseName="一般信息" father="bl">
<name chineseName="姓名" vid="e5">刘洪</name>
<dept chineseName="科室" vid="e1">骨伤科</dept>
<bedno chineseName="床号" vid="e3">6530</bedno>
<sex chineseName="性别" vid="e6">男性</sex>
<age chineseName="年龄" vid="e7">53岁</age>
<marriage chineseName="婚姻" vid="e9">已婚</marriage>
<birthplace chineseName="出生地" vid="e10" fwDate="2017-09-06 17:09:47.164" fmDepart="7107" fmLevel="1" fmId="271" fmDate="2017-09-06 17:09:47.168">市中区白马镇</birthplace>
<profession chineseName="职业" vid="e8" fwDate="2017-09-06 17:09:40.291" fmDepart="7107" fmLevel="1" fmId="271" fmDate="2017-09-06 17:09:40.295">农民</profession>
<inhos_date chineseName="入院时间" vid="e13">2017年09月06日 15:50</inhos_date>
<jnrq chineseName="记录时间" typeid="1" vid="e15" fwDate="2017-09-06 17:10:00.915" fmDepart="7107" fmLevel="1" fmId="271" fmDate="2017-09-06 17:10:00.918">2017年09月06日 17:00</jnrq>
<serial_number chineseName="住院号" vid="e4">0000018878</serial_number>
<nation chineseName="民族" vid="e11">汉族</nation>
<dz chineseName="地址内容" vid="e12" fwDate="2017-09-06 17:09:54.348" fmDepart="7107" fmLevel="1" fmId="271" fmDate="2017-09-06 17:09:54.351">市中区白马镇 </dz>
</inp_info>
</emr>','chineseName="([^"]*)"|>([^<]*)<') as ddd
- sqlserver 正则函数
- 【sqlserver】【自定义函数】正则匹配实现
- sqlserver 执行正则表达式,调用c# 函数、代码
- sqlserver 执行正则表达式,调用c# 函数、代码
- sqlserver函数
- sqlserver函数
- sqlserver函数
- SQLServer 函数
- SqlServer函数
- SQLSERVER函数
- SQLServer函数
- sqlserver 函数
- sqlserver函数
- 【SqlServer-函数】
- sqlserver函数
- sqlserver函数
- sqlserver函数
- SQLserver中使用正则表达式
- 搭建HBase完全分布式集群
- redhat7安装oracle11gR2之环境准备
- 通知栏Notification基本使用
- POJ1002
- oracle导入导出.dmp文件
- sqlserver 正则函数
- Oracle笔记01
- 解决Nginx下WordPress后台页面混乱
- 新闻发布
- iOS-生成CSR文件(用于创建证书)
- 【Linux】sed用法详解
- 在windows上通过Xshell远程连接虚拟机上ubuntu server的jupyter配置方法
- #安装tensorflow的血泪史
- 做IT想要了解敏捷开发,DevOps,先搞懂项目管理再说