加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server-2008 – T-SQL删除所有非alpha和非数字字符

发布时间:2020-12-12 06:45:03 所属栏目:MsSql教程 来源:网络整理
导读:有没有更聪明的方法来删除所有特殊字符而不是一系列约15个嵌套替换语句? 以下工作,但只处理三个字符(符号,空白和句点). select CustomerID,CustomerName,Replace(Replace(Replace(CustomerName,'',''),' ','.','') as CustomerNameStrippedfrom Customer 解
有没有更聪明的方法来删除所有特殊字符而不是一系列约15个嵌套替换语句?

以下工作,但只处理三个字符(&符号,空白和句点).

select CustomerID,CustomerName,Replace(Replace(Replace(CustomerName,'&',''),' ','.','') as CustomerNameStripped
from Customer

解决方法

一种灵活的方式;
ALTER FUNCTION [dbo].[fnRemovePatternFromString](@BUFFER VARCHAR(MAX),@PATTERN VARCHAR(128)) RETURNS VARCHAR(MAX) AS
BEGIN
    DECLARE @POS INT = PATINDEX(@PATTERN,@BUFFER)
    WHILE @POS > 0 BEGIN
        SET @BUFFER = STUFF(@BUFFER,@POS,1,'')
        SET @POS = PATINDEX(@PATTERN,@BUFFER)
    END
    RETURN @BUFFER
END

select dbo.fnRemovePatternFromString('cake & beer $3.99!?c','%[$&.!?]%')

(No column name)
cake  beer 399c

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读