2014-10-23 1 views
2

I'am в настоящее время разрабатывает программу и я хочу, чтобы написать функцию, которая принимает значение в следующем форматеReplace пространства, используя функцию в SQL

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

Я хочу, чтобы заменить пробелы выше «_» и нужен выход, как показано в следующем формате (обратите внимание, что это должно произойти только для строки, которая находится внутри двойных кавычек)

"AAAA_BBBB" CCCC DDDD EEEE "FFFF_GGGG_HHHH" 

может кто-нибудь помочь мне с этим

ответ

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" 
+0

Большое спасибо за быстрый ответ – user2749605

+0

Великий ответ .. недурно (у) –

+0

Привет @Jason W, мне нужно еще больше расширить эту функцию и я ожидаю, ваша помощь .. перейдите по ссылке https://stackoverflow.com/questions/26522911/sql-character-replace-function-extend – user2749605