使用sql中的函数替换空格

时间:2014-10-23 04:41:09

标签: sql sql-server replace sql-function

我正在开发一个程序,我想编写一个接受以下格式值的函数

"AAAA BBBB"  CCCC DDDD EEEE "FFFF GGGG HHHH"

我想用" _"替换上面的空格。并需要输出如下所示的格式 (请注意,这只适用于双引号内的字符串)

"AAAA_BBBB"  CCCC DDDD EEEE "FFFF_GGGG_HHHH"

任何人都可以帮助我

1 个答案:

答案 0 :(得分:3)

以下是您可以根据需要添加到函数中的逻辑。

DECLARE @In VARCHAR(50) = '"AAAA BBBB"  CCCC DDDD EEEE "FFFF GGGG HHHH"'

DECLARE @Quote SMALLINT = -1, @Index INT = 1, @Char CHAR(1)
WHILE @Index <= LEN(@In) BEGIN
    SET @Char = SUBSTRING(@In, @Index, 1)
    IF @Char = '"'
        SET @Quote = @Quote * -1
    IF @Char = ' ' AND @Quote > 0
        SET @In = STUFF(@In, @Index, 1, '_')
    SET @Index = @Index + 1
END

PRINT @In

<强>输出

"AAAA_BBBB"  CCCC DDDD EEEE "FFFF_GGGG_HHHH"