我有字符串价值' jai'
我想将此字符串替换为' j_a_i'
我该怎么做?
我使用了以下SQL查询:
update photos set filename = replace(filename, ' ', '_');
但它只是在字符串中更新空间。
答案 0 :(得分:0)
您可以做的是创建一个函数并在select
或update
语句中调用此函数。
现在位于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