SQL Server中利用正则表达式替换字符串
--如果存在则删除原有函数
IF OBJECT_ID(N'dbo.RegexReplace') IS NOT NULL
DROP FUNCTION dbo.RegexReplace
GO
--开始创建正则替换函数
CREATE FUNCTION dbo.RegexReplace
(
@string VARCHAR(MAX), --被替换的字符串
@pattern VARCHAR(255), --替换模板
@replacestr VARCHAR(255), --替换后的字符串
@IgnoreCase INT = 0 --0区分大小写 1不区分大小写
)
RETURNS VARCHAR(8000)
AS
BEGIN
DECLARE @objRegex INT, @retstr VARCHAR(8000)
--创建对象
EXEC sp_OACreate 'VBScript.RegExp', @objRegex OUT
--设置属性
EXEC sp_OASetProperty @objRegex, 'Pattern', @pattern
EXEC sp_OASetProperty @objRegex, 'IgnoreCase', @IgnoreCase
EXEC sp_OASetProperty @objRegex, 'Global', 1
--执行
EXEC sp_OAMethod @objRegex, 'Replace', @retstr OUT, @string, @replacestr
--释放
EXECUTE sp_OADestroy @objRegex
RETURN @retstr
END
GO
--保证正常运行的话,需要将Ole Automation Procedures选项置为1
EXEC sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE
EXEC sp_configure 'Ole Automation Procedures', 1
RECONFIGURE WITH OVERRIDE
复制以上代码,到SQL中执行
然后测试,如下
1 --2.将姓名倒过来
2 SELECT dbo.RegexReplace('John Smith', '([a-z]+)\s([a-z]+)', '$2,$1',1)
3 /*
4 --------------------------------------
5 Smith,John
6 */
在自己的项目中测试:查询结果去掉html标签
1 Select dbo.RegexReplace('<p><span style="font-size: 14px; line-height: 115%; font-family: 宋体;">(1)您手脚发凉吗?</span><br/></p>','\<[^<>]*\>','',1)
结果:
最新文章
- mvc图片上传到服务器
- 如何安装Oracle Instant Client
- GZFramwork数据库层《前言》DLL项目引用
- eclipse怎么显示代码行数
- 常用的邮箱服务器(SMTP、POP3)地址、端口
- Ugly Window 【acm题】
- 简单好用的 AJAX 上传插件,还可以抛弃难看的 file 按钮哦~
- 在Debian9(linux)上使用 的 python 3 IDLE(已经安装了python 2.7 的情况下)
- Telerik 控件 RadGridview实现绑定
- js excel 列表导出
- Directory Opus(DO) 个人使用经验 2.0
- [Day17]常用API(System、Math、Arrays、BigInteger、BigDecimal)
- echarts绘制k线图为什么写candlestick类型就报错
- Oracle ORA 6510
- vue 的父组件和子组件互相获取数据和方法
- python:django
- PAT甲级 1128. N Queens Puzzle (20)
- 20155226《网络攻防》 Exp5 MSF基础应用
- SPOJ QTREE5 lct
- PHP PDO prepare()、execute()和bindParam()方法详解