SQL替换字符串中的所有字符

时间:2014-08-19 16:39:33

标签: sql string replace

是否有任何SQL语句用'X'替换字符串中的所有内容。字符串的长度不一样,所以它有点棘手。除了下面的功能之外,我还没有找到任何能做到这一点,但是当我传入'a-z0-9'需要很长时间,因为我必须搜索所有这些,但我真的只是想要替换一切无论它是什么。

[dbo].[cfn_StripCharacters]
 (
    @String NVARCHAR(MAX), 
 @MatchExpression VARCHAR(255)='a-z0-9'
)
RETURNS NVARCHAR(MAX)
AS
BEGIN
SET @MatchExpression =  '%['+@MatchExpression+']%'

WHILE PatIndex(@MatchExpression, @String) > 0
    SET @String = Stuff(@String, PatIndex(@MatchExpression, @String), 1, 'X')

RETURN @String

例如,数据列看起来像这样,我想用x的替换整个字符串:

975g - > XXXX

ryth5 - > XXXXX

1234vvsdf5 - > XXXXXXXXXX

test1234 - > XXXXXXXX

3 个答案:

答案 0 :(得分:5)

如果这是SQL Server,您可以使用REPLICATE函数,只需复制x字符串的LEN()

SELECT REPLICATE('x', LEN(@String))

sqlFiddle

编辑 - 看起来这也可以通过REPEAT()在MySQL中使用,但我还没有通过测试

答案 1 :(得分:0)

您可以使用Replicate和Len功能替换所有字符。

declare @str varchar(20)

set @str = 'abc'

select @str = REPLICATE('X', len(@str))

select @str

答案 2 :(得分:-1)

没有内置功能可以做到这一点。但是,您可以编写一个执行正则表达式替换的CLR函数。