使用正则表达式方式替换字符
2016-05-05 14:59
232 查看
SQL 本身的Replace方式不支持正则表达式方式匹配被替换的字符,因此要想实现就要自己编写一个Function,如去掉字符串中所有非数字和字母的字符
可以使用%[^0-9a-Z]%
测试:
结果为:ssdfsf123123
可以使用%[^0-9a-Z]%
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF OBJECT_ID('fn_RegExReplace') IS NOT NULL DROP FUNCTION fn_RegExReplace GO -- ============================================= -- Author: Nolan Shang -- Create date: 05/05/2016 -- Description: Replace string with regex pattern -- ============================================= CREATE FUNCTION fn_RegExReplace ( @string VARCHAR(MAX), @substring VARCHAR(MAX), @replacement VARCHAR(MAX) ) RETURNS VARCHAR(max) AS BEGIN DECLARE @sRet VARCHAR(MAX) DECLARE @iPos INT=1 WHILE @iPos>0 BEGIN SET @iPos=PATINDEX(@substring,@string) IF @iPos>0 BEGIN SET @sRet=isnull(@sRet,'')+left(@string,@iPos-1)+@replacement SET @string=substring(@string,@iPos+1,CASE WHEN len(@string)<=@iPos THEN LEN(@string) ELSE len(@string)-@iPos END) END ELSE BEGIN SET @iPos=0 SET @sRet=isnull(@sRet,'')+@string END END RETURN @sRet END GO
测试:
SELECT dbo.fn_RegExReplace('~!@#$他%^&*|()_+;''ssdfsf123123,.','%[^0-9a-Z]%','')
结果为:ssdfsf123123
相关文章推荐
- android aidl文件无法自动生成java文件
- java 计算中缀表达式结果
- 二十 获取对象信息
- JFinal学习
- resharper安装后,一不小心点错了(选择了object browser)
- 索引管理 《第四篇》
- 执行搜索 《第三篇》
- 构建索引 《第二篇》
- 15年编程生涯,资深架构师总结的7条经验
- .Net中C#的DllImport的用法
- 使用hyperpacer实现监控数据的同步收集
- android studio导入第三方库(此处是slidingmenu)
- 搭建kafka环境
- Spring 对数据库操作
- 百度地图
- SQL小记之number转varchar2
- 《剑指offer》约瑟夫环问题
- python 网络爬虫 翻译
- GitHub上那些好用的开源项目
- 第十一周实践项目3————警察与厨师(2)