Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 апостроф при экспорте в csv , экранирование в ""  [new]
solnceyest
Member

Откуда:
Сообщений: 4
При экспотре в csv надо заключать слова содержащие апостров в двойные кавычки "", какие есть варианты, подскажите пожайлуста?

Пример:
Дано в таблице:
1)4820 NUTTER'S CROSS RD.
2)11110 CHAMBERS CT. 'D'

Надо получить в файле
1)4820 "NUTTER'S" CROSS RD.
2)11110 CHAMBERS CT. "'D'"
8 июл 18, 21:24    [21554439]     Ответить | Цитировать Сообщить модератору
 Re: апостроф при экспорте в csv , экранирование в ""  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36965
Тут программист нужен, который знает как строки резать на слова как минимум.
8 июл 18, 21:36    [21554465]     Ответить | Цитировать Сообщить модератору
 Re: апостроф при экспорте в csv , экранирование в ""  [new]
solnceyest
Member

Откуда:
Сообщений: 4
Microsoft SQL Server 2012 (SP4-GDR)
9 июл 18, 03:28    [21554820]     Ответить | Цитировать Сообщить модератору
 Re: апостроф при экспорте в csv , экранирование в ""  [new]
solnceyest
Member

Откуда:
Сообщений: 4
вот есть скрипт на разложение по словам.
ОК, Я слово с апострофом сделаю в кавычках двойных, как дальше по простому склеить, без отдельных update таблицы?


Extracting All The Words From a String In An SQL Query
WITH SeparateWords ( StringValue, Word, Position, RestOfLine)
AS
(
SELECT @StringValue
, CASE CHARINDEX(' ',@StringValue)
WHEN 0 THEN @StringValue
ELSE LEFT(@StringValue, CHARINDEX(' ',@StringValue) -1)

END
, 1
, CASE CHARINDEX(' ',@StringValue)
WHEN 0 THEN ''
ELSE RIGHT(@StringValue, LEN(@StringValue) - CHARINDEX(' ',@StringValue))
END
UNION ALL

SELECT sw.StringValue
, CASE CHARINDEX(' ',RestOfLine)
WHEN 0 THEN RestOfLine
ELSE LEFT(RestOfLine, CHARINDEX(' ',RestOfLine) -1)
END
, Position + 1
, CASE CHARINDEX(' ',RestOfLine)
WHEN 0 THEN ''
ELSE RIGHT(RestOfLine, LEN(RestOfLine) -
CHARINDEX(' ',RestOfLine))
END
FROM SeparateWords AS sw
WHERE sw.RestOfLine != ''
)
SELECT * FROM SeparateWords
GO
9 июл 18, 03:42    [21554821]     Ответить | Цитировать Сообщить модератору
 Re: апостроф при экспорте в csv , экранирование в ""  [new]
solnceyest
Member

Откуда:
Сообщений: 4
вроде работает в отдельном стейтменте, как бы ето засунуть в обший, чтобы делало на лету?

DECLARE @StringValue VARCHAR(200) = '11110 CHAMBERS CT. '''+'D'+'''';


WITH SeparateWords ( StringValue, Word, Position, RestOfLine)
AS
(
SELECT @StringValue
, CASE CHARINDEX(' ',@StringValue)
WHEN 0 THEN @StringValue
ELSE
case when PATINDEX('%''%', LEFT(@StringValue, CHARINDEX(' ',@StringValue) -1))>0 then quotename(LEFT(@StringValue, CHARINDEX(' ',@StringValue) -1),'"')
else LEFT(@StringValue, CHARINDEX(' ',@StringValue) -1)
end
END
, 1
, CASE CHARINDEX(' ',@StringValue)
WHEN 0 THEN ''
ELSE RIGHT(@StringValue, LEN(@StringValue) - CHARINDEX(' ',@StringValue))
END
UNION ALL

SELECT sw.StringValue
, CASE CHARINDEX(' ',RestOfLine)
WHEN 0 THEN RestOfLine
ELSE case when PATINDEX('%''%', LEFT(RestOfLine, CHARINDEX(' ',RestOfLine) -1))>0 then quotename(LEFT(RestOfLine, CHARINDEX(' ',RestOfLine) -1),'"') else LEFT(RestOfLine, CHARINDEX(' ',RestOfLine) -1) end
END
, Position + 1
, CASE CHARINDEX(' ',RestOfLine)
WHEN 0 THEN ''
ELSE RIGHT(RestOfLine, LEN(RestOfLine) -
CHARINDEX(' ',RestOfLine))
END
FROM SeparateWords AS sw
WHERE sw.RestOfLine != ''
)

SELECT

STUFF((SELECT ' ' + US.word
FROM SeparateWords US
ORDER BY position
FOR XML PATH('')), 1, 1, '') StringValue


--ORDER BY 1
9 июл 18, 06:11    [21554839]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить