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

Откуда:
Сообщений: 33
Добрый день. Помогите, направьте в правильное русло, пожалуйста.
Есть такой запрос
select   quotename(a.LOGIN,'"')"LOGIN", quotename(a.F_NAME,'"') "F_NAME", quotename(a.TAB_NUM,'"')"TAB_NUM",
                               quotename(a.ICODE,'"')"ICODE", QUOTENAME(a.DEPART,'"')"DEPART", quotename(a.STAT,'"')"STAT",
                               QUOTENAME(a.USER_ID,'"')"USER_ID", QUOTENAME(a.ACCOUNT_STATUS,'"')"ACCOUNT_STATUS",
                               QUOTENAME(a.LOCK_DATE_DBAUSR,'"')"LOCK_DATE", quotename(a.EXPIRY_DATE_DBAUSR,'"')"EXPIRY_DATE",
                               QUOTENAME(a.CREATED_DBAUSR,'"')"CREATED", quotename(b.Timelogin,'"')"CFT_TIMELOGIN",
                               quotename(c.dismissal,'"')"DISMISSAL", QUOTENAME(c.moveDate,'"')"MOVE_DATE",
                               case       when (a.STAT not like 'Блокирован' or a.account_status = 'OPEN' or a.account_status = 'EXPIRED' or a.account_status = 'EXPIRED(GRACE)') and c.dismissal ='3' then '012'
                                                               when a.STAT not like 'Блокирован%' and (b.Timelogin - c.moveDate) > 1 and c.dismissal = '3' then '123'
                                                               when a.STAT not like 'Блокирован%' and b.Timelogin is null or b.Timelogin like '' then '345'
                                                               when (GETDATE() - a.EXPIRY_DATE_DBAUSR) >=7 and a.STAT like 'Пароль истек' then '678'
                                                               when (GETDATE() - b.Timelogin) > 60 and a.STAT not like 'Блокирован%' then 91011'
                                                               else '' end as Comment
from      (              vCFTUsers a left outer join tCFTTimeLogin b
                                               on a.LOGIN = b.Name)
                                               left outer join tSAP c on a.TAB_NUM = c.tabnum

Он выгружает из БД определенные поля с данными.
Затем эта выгрузка сохраняется в *.txt, после чего конвертируется в удобноваримый вид в *.xlsx
Значение каждого поля берется в кавычки для того, чтобы в дальнейшем при сохранении и конвертации не было сдвигов данных в случае наличия "лишней" запятой где-нибудь в тексте.
Но столкнулся с другой бедой. В некоторых полях иногда встречаются символы переноса строки в конце поля. И, соответственно, кавычки не спасают и все данные "едут"
На форуме встретил такой вариант (автора не помню)

declare @str varchar(20)
set @str='123'+CHAR(13)+'456'
 
print @str
print replace(@str, char(13),'')


Но не могу допереть, возможно-ли как-нибудь это прикрутить к моему коду?
Спасибо.
13 янв 14, 19:21    [15410091]     Ответить | Цитировать Сообщить модератору
 Re: Замена или удаление символа перевода строки в openquery  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31993
k_mak
Но не могу допереть, возможно-ли как-нибудь это прикрутить к моему коду?
В смысле? Просто используете функцию replace, какие проблемы?
13 янв 14, 19:34    [15410129]     Ответить | Цитировать Сообщить модератору
 Re: Замена или удаление символа перевода строки в openquery  [new]
k_mak
Member

Откуда:
Сообщений: 33
alexeyvg , а куда ее подпихивать, не подскажете?
13 янв 14, 20:04    [15410209]     Ответить | Цитировать Сообщить модератору
 Re: Замена или удаление символа перевода строки в openquery  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Вам надо не запрос, который выгружает данные из бд править, а сами данные в бд, и не допускать появления таких данных в дальнейшем.
13 янв 14, 20:33    [15410300]     Ответить | Цитировать Сообщить модератору
 Re: Замена или удаление символа перевода строки в openquery  [new]
k_mak
Member

Откуда:
Сообщений: 33
pkarklin, если б ту базу вел я...
13 янв 14, 20:39    [15410318]     Ответить | Цитировать Сообщить модератору
 Re: Замена или удаление символа перевода строки в openquery  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
k_mak
а куда ее подпихивать, не подскажете?


Впихивать к тем полям, в которых

автор
иногда встречаются символы переноса строки
13 янв 14, 20:56    [15410390]     Ответить | Цитировать Сообщить модератору
 Re: Замена или удаление символа перевода строки в openquery  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31993
k_mak
alexeyvg , а куда ее подпихивать, не подскажете?

Например:
select   quotename(replace(a.LOGIN, char(13),''),'"') "LOGIN", ...
13 янв 14, 21:08    [15410434]     Ответить | Цитировать Сообщить модератору
 Re: Замена или удаление символа перевода строки в openquery  [new]
k_mak
Member

Откуда:
Сообщений: 33
alexeyvg,pkarklin , спасибо огромное!:) завтра опробую
13 янв 14, 21:14    [15410444]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить