2013-05-15 124 views
0

你好,我不是很擅長SQL,所以任何幫助都會很棒,謝謝。如何用星號替換字符串中的所有字符,空格除外?

我有兩列字和替換表

現在我的替換列空,但是我想做來自世界列計數字符一個更新語句然後添加特定的符號來替代在字列例如值列

是世界您好更新將增加

Hello World, ***** ***** 

現在我得到了簡單的

update Words 
set replacement = Replace(words, '*') 
+0

你能解釋一下?您是否有一個替換列表,例如「st」 - >「街道」,「你好」 - >「aloha」等?或者只是過濾,例如「世界」,「你好」,「測試」所有的明星? – RichardTheKiwi

+0

沒有列表只是想用sql asterisk替換字符,就好像你會是***** *** – Neo

+1

所以你想用星號替換每個字母,除了空格嗎? –

回答

1

以下是可用於執行此類更新的功能。

它使用一個數字表,如果你還沒有一個(創建一個!),你可以read more here

create function dbo.ReplaceChars(@Word varchar(max), @Char char(1)) 
returns varchar(max) 
as 
begin 

    declare @output varchar(1000); 
    set @output = replicate(@Char, len(@Word)); 

    select @output = stuff(@output, n, 1, ' ') 
    from ( select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union 
       select 7 union select 8 union select 9 union select 10 union select 11 union select 12 
      ) number(n) --** use your own number table here ** 
    where substring(@Word, n, 1) = ' ' and 
      n <=len(@Word); 

    return @output; 

end 



--usage 
declare @table table (Word varchar(max), Replacement varchar(max)) 
insert into @table (Word) 
    select 'Hello World' union all 
    select 'one two yak'; 

update @table 
set  Replacement = dbo.ReplaceChars(Word, '*') 
where Word is not null; 

select * from @table; 
+0

非常感謝 – Neo

0

使用複製功能,您可以輕鬆地完成您正在嘗試執行的操作。

重複( '*',LEN(字))

例子:

declare @test table (
    word varchar(100) 
    ,replacement varchar(100) 
) 

insert into @test 
values 
('bad',null) 
,('word',null) 

select 
    word test1 
    ,replacement test1 
from @test 

update @test 
set replacement = replicate('*',len(word)) 
where replacement is null 

select 
    word test2 
    ,replacement test2 
from @test 
相關問題