如何在SQL中替换字符串值?

时间:2017-11-06 11:42:49

标签: sql

我有字符串价值' jai'

我想将此字符串替换为' j_a_i'

我该怎么做?

我使用了以下SQL查询:

update photos set filename = replace(filename, ' ', '_');

但它只是在字符串中更新空间。

2 个答案:

答案 0 :(得分:0)

您可以做的是创建一个函数并在selectupdate语句中调用此函数。 现在位于MSSQL,但您可以在MySQL或其他内容中进行类似操作

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION Split_String(@string nvarchar(255))
RETURNS nvarchar(255)
AS
BEGIN
    declare @counter int = 1
    declare @returnString nvarchar(max) = ''
    while (@counter <= len(@string))
    begin
        set @returnString = @returnString + SUBSTRING ( @string ,@counter , 1 )  
        if @counter != (len(@string))
        begin
            set @returnString = @returnString + '_'
        end
        set @counter = @counter + 1
    end
    return @returnString
END
GO

然后你可以在select:

中调用该函数
select dbo.Split_String('jai')

结果是

  

j_a_i

所以你现在可以进行更新,如下所示:

update photos set filename = dbo.Split_String(filename);

答案 1 :(得分:0)

但是,如果您要在每个char之后添加_,那么您可以通过循环执行(MS SQL Server):

DECLARE @DATA VARCHAR(MAX)= 'jai';
DECLARE @POINTER INT= LEN(@DATA);
WHILE @POINTER > 1
    BEGIN
        SET @DATA = STUFF(@DATA, @POINTER, 0, '_');
        SET @POINTER = @POINTER - 1;
    END;
SELECT @DATA [DATA]; 

结果:

DATA
j_a_i