sql - 使用sql中的函数替换空格

标签 sql sql-server replace sql-function

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

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

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

"AAAA_BBBB"  CCCC DDDD EEEE "FFFF_GGGG_HHHH"

谁能帮我解决这个问题

最佳答案

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

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"

关于sql - 使用sql中的函数替换空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26521414/

相关文章:

bash - 如何使用linux find命令替换所有文件名中的特殊字符?

c# - 我怎样才能让希伯来语中的这个字符串替换工作?

mysql - 显示 id 并计算相同的外键

SQLCop 测试 tSQLt - 新

sql - 在 postgresql 上使用 IF 语句选择

带有前导填充零的 SQL 标识

sql - 如何显示employees表中包含 'a'或 'o'或 'e'字母的last_name?

mysql - 如何更改现有外键以添加约束名称

java - 数据类型 datetime 和 time 在大于或等于运算符中不兼容

vim - 在 Vim 中搜索并替换特定行