SQL Server中利用正则表达式替换字符串

2013 from—http://blog.csdn.net/return_false/article/details/11984613

建立正则替换函数,利用了OLE对象,以下是函数代码:

  1. –如果存在则删除原有函数
  2. IF OBJECT_ID(N‘dbo.RegexReplace’IS NOT NULL
  3. DROP FUNCTION dbo.RegexReplace
  4. GO
  5. –开始创建正则替换函数
  6. CREATE FUNCTION dbo.RegexReplace
  7. (
  8.     @string VARCHAR(MAX),   –被替换的字符串
  9.     @pattern VARCHAR(255),  –替换模板
  10.     @replacestr VARCHAR(255),   –替换后的字符串
  11.     @IgnoreCase INT = 0 –0区分大小写 1不区分大小写
  12. )
  13. RETURNS VARCHAR(8000)
  14. AS
  15. BEGIN
  16. DECLARE @objRegex INT, @retstr VARCHAR(8000)
  17. –创建对象
  18. EXEC sp_OACreate ‘VBScript.RegExp’, @objRegex OUT
  19. –设置属性
  20. EXEC sp_OASetProperty @objRegex, ‘Pattern’, @pattern
  21. EXEC sp_OASetProperty @objRegex, ‘IgnoreCase’, @IgnoreCase
  22. EXEC sp_OASetProperty @objRegex, ‘Global’, 1
  23. –执行
  24. EXEC sp_OAMethod @objRegex, ‘Replace’, @retstr OUT, @string, @replacestr
  25. –释放
  26. EXECUTE sp_OADestroy @objRegex
  27. RETURN @retstr
  28. END
  29. GO
  30. –保证正常运行的话,需要将Ole Automation Procedures选项置为1  
  31. EXEC sp_configure ‘show advanced options’, 1
  32. RECONFIGURE WITH OVERRIDE
  33. EXEC sp_configure ‘Ole Automation Procedures’, 1
  34. 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. */

 

 

 

建立正则替换函数,利用了OLE对象,以下是函数代码:

  1. –如果存在则删除原有函数
  2. IF OBJECT_ID(N‘dbo.RegexReplace’IS NOT NULL
  3.     DROP FUNCTION dbo.RegexReplace
  4. GO
  5. –开始创建正则替换函数
  6.  CREATE FUNCTION dbo.RegexReplace
  7. (
  8.     @string VARCHAR(MAX),   –被替换的字符串
  9.     @pattern VARCHAR(255),  –替换模板
  10.     @replacestr VARCHAR(255),   –替换后的字符串
  11.     @IgnoreCase INT = 0 –0区分大小写 1不区分大小写
  12. )
  13. RETURNS VARCHAR(8000)
  14. AS
  15. BEGIN
  16.     DECLARE @objRegex INT, @retstr VARCHAR(8000)
  17.     –创建对象
  18.     EXEC sp_OACreate ‘VBScript.RegExp’, @objRegex OUT
  19.     –设置属性
  20.     EXEC sp_OASetProperty @objRegex, ‘Pattern’, @pattern
  21.     EXEC sp_OASetProperty @objRegex, ‘IgnoreCase’, @IgnoreCase
  22.     EXEC sp_OASetProperty @objRegex, ‘Global’, 1
  23.     –执行
  24.     EXEC sp_OAMethod @objRegex, ‘Replace’, @retstr OUT, @string, @replacestr
  25.     –释放
  26.     EXECUTE sp_OADestroy @objRegex
  27.     RETURN @retstr
  28. END
  29. GO
  30. –保证正常运行的话,需要将Ole Automation Procedures选项置为1  
  31. EXEC sp_configure ‘show advanced options’, 1
  32. RECONFIGURE WITH OVERRIDE
  33. EXEC sp_configure ‘Ole Automation Procedures’, 1
  34. 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. */
上一篇
下一篇