SQL替换函数中的Regex模式?

SQL替换函数中的Regex模式?

SELECT REPLACE('<strong>100</strong><b>.00 GB', '%^(^-?\d*\.{0,1}\d+$)%', '');

我想用上面的正则表达式替换数字的两个部分之间的任何标记,但它似乎不起作用。我不确定是否是regex语法错误,因为我尝试了更简单的语法,例如'%[^0-9]%'只是为了测试,但也不起作用。有人知道我怎样才能做到这一点吗?


阿波罗的战车
浏览 505回答 3
3回答

回首忆惘然

一般来说,SQLServer不支持正则表达式,您不能在本机T-SQL代码中使用它们。您可以编写一个CLR函数来完成这个任务。看见这里例如。

三国纷争

使用Replace(Column, BadFoundCharacter, '')可能会更快。此外,与其仅仅替换下一列中找到的一个坏字符,不如替换所有已找到的字符。WHILE&nbsp;1&nbsp;=&nbsp;1&nbsp;BEGIN &nbsp;&nbsp;&nbsp;&nbsp;UPDATE&nbsp;dbo.YourTable&nbsp;&nbsp;&nbsp;&nbsp;SET&nbsp;Column&nbsp;=&nbsp;Replace(Column,&nbsp;Substring(Column,&nbsp;PatIndex('%[^0-9.-]%',&nbsp;Column),&nbsp;1),&nbsp;'') &nbsp;&nbsp;&nbsp;&nbsp;WHERE&nbsp;Column&nbsp;LIKE&nbsp;'%[^0-9.-]%' &nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;@@RowCount&nbsp;=&nbsp;0&nbsp;BREAK;END;我相信这将比公认的答案更有效,这仅仅是因为它所做的操作较少。还有其他可能更快的方法,但我现在没有时间去探索这些。
打开App,查看更多内容
随时随地看视频慕课网APP