0

您好,我不太擅长 SQL,所以任何帮助都会非常感谢您。

我有一个有 2 列单词和替换的表

现在我的替换列是空的但是我正在尝试做一个更新语句来计算世界列中的字符然后将特定符号添加到替换列

例如 word 列中的值是 Hello World 更新将添加

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

现在我很简单

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

2 回答 2

1

这是您可以用来执行此类更新的功能。

它使用数字表,如果您还没有数字表,您可以在此处阅读更多信息(创建一个!)。

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;
于 2013-05-15T22:42:55.587 回答
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
于 2013-05-17T06:11:05.033 回答