为了账号安全,请及时绑定邮箱和手机立即绑定

SQL替换函数中的Regex模式?

SQL替换函数中的Regex模式?

SQL替换函数中的Regex模式?SELECT REPLACE('<strong>100</strong><b>.00 GB', '%^(^-?\d*\.{0,1}\d+$)%', '');我想用上面的正则表达式替换数字的两个部分之间的任何标记,但它似乎不起作用。我不确定是否是regex语法错误,因为我尝试了更简单的语法,例如'%[^0-9]%'只是为了测试,但也不起作用。有人知道我怎样才能做到这一点吗?
查看完整描述

3 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

一般来说,SQLServer不支持正则表达式,您不能在本机T-SQL代码中使用它们。

您可以编写一个CLR函数来完成这个任务。看见这里例如。


查看完整回答
反对 回复 2019-07-12
?
三国纷争

TA贡献1804条经验 获得超7个赞

使用Replace(Column, BadFoundCharacter, '')可能会更快。此外,与其仅仅替换下一列中找到的一个坏字符,不如替换所有已找到的字符。

WHILE 1 = 1 BEGIN
    UPDATE dbo.YourTable    SET Column = Replace(Column, Substring(Column, PatIndex('%[^0-9.-]%', Column), 1), '')
    WHERE Column LIKE '%[^0-9.-]%'
    If @@RowCount = 0 BREAK;END;

我相信这将比公认的答案更有效,这仅仅是因为它所做的操作较少。还有其他可能更快的方法,但我现在没有时间去探索这些。


查看完整回答
反对 回复 2019-07-12
  • 3 回答
  • 0 关注
  • 542 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信