SQL Server:RegEx ASCII删除

时间:2015-06-11 15:17:34

标签: sql-server regex collation case-sensitive case-insensitive

寻找一种进行区分大小写搜索的方法。

CREATE FUNCTION [dbo].[fn_StripCharacters]
(
    @String NVARCHAR(MAX), 
    @RemoveFollowing VARCHAR(255)
)
RETURNS NVARCHAR(MAX)
AS
BEGIN
    SET @RemoveFollowing =  '%['+@RemoveFollowing+']%'
    WHILE PatIndex(@RemoveFollowing, @String) > 0
        SET @String = Stuff(@String, PatIndex(@RemoveFollowing, @String), 1, '')
    RETURN @String
END
GO

SELECT dbo.fn_StripCharacters('RoaR! rings the roll', '\R')
  • 提供输入:' RoaR!滚动'

  • 预期输出:' oa!滚动'

  • 收到的输出:' oa! oll'

RegEx之前尝试过(没有成功):' \ R',' \ x52',' \ n42',' \ u0052' ,' R'。

我也尝试整理数据库,但没有结果:

COLLATE Latin1_General_100_CS_AS_SC;

Microsoft SQL Server Management Studio 12.0.4100.1

Microsoft .NET Framework 4.0.30319.34011

1 个答案:

答案 0 :(得分:2)

你为什么要使用循环?您要做的就是用空字符串替换某个字母?您需要为输入指定排序规则,使其区分大小写。

select replace('RoaR! rings the roll' COLLATE Latin1_General_CS_AS, 'R', '')