你好,我不是很擅長SQL,所以任何幫助都會很棒,謝謝。如何用星號替換字符串中的所有字符,空格除外?
我有兩列字和替換表
現在我的替換列空,但是我想做來自世界列計數字符一個更新語句然後添加特定的符號來替代在字列例如值列
是世界您好更新將增加
Hello World, ***** *****
現在我得到了簡單的
update Words
set replacement = Replace(words, '*')
你好,我不是很擅長SQL,所以任何幫助都會很棒,謝謝。如何用星號替換字符串中的所有字符,空格除外?
我有兩列字和替換表
現在我的替換列空,但是我想做來自世界列計數字符一個更新語句然後添加特定的符號來替代在字列例如值列
是世界您好更新將增加
Hello World, ***** *****
現在我得到了簡單的
update Words
set replacement = Replace(words, '*')
以下是可用於執行此類更新的功能。
它使用一個數字表,如果你還沒有一個(創建一個!),你可以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;
非常感謝 – Neo
使用複製功能,您可以輕鬆地完成您正在嘗試執行的操作。
重複( '*',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
你能解釋一下?您是否有一個替換列表,例如「st」 - >「街道」,「你好」 - >「aloha」等?或者只是過濾,例如「世界」,「你好」,「測試」所有的明星? – RichardTheKiwi
沒有列表只是想用sql asterisk替換字符,就好像你會是***** *** – Neo
所以你想用星號替換每個字母,除了空格嗎? –