Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Задваиваются строки из за переноса строк / 12 сообщений из 12, страница 1 из 1
22.06.2018, 09:38
    #39663944
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задваиваются строки из за переноса строк
Здравствуйте!

Есть SQL-запрос. Запрос рабочий. Но есть но. Обнаружились адреса доставки, которые имеют перенос строки. В результате нормально выгружаются. Но когда копируешь в эксель, сохраняешь в текстовом формате и потом импортируешь в эксель, а также сохраняешь в формате csv, то строки задваиваются.
SQL-запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
SELECT	
	CAST(F1."[Города].[Город].[Город].[MEMBER_CAPTION]" AS NVARCHAR(50)) AS [Город],
	CAST(F1."[Торговые точки].[Клиент].[Клиент].[MEMBER_CAPTION]" AS NVARCHAR(150)) AS [Клиент],
	CAST(F1."[Торговые точки].[Код ТТ].[Код ТТ].[MEMBER_CAPTION]" AS NVARCHAR(50))AS [Код ТТ],
	CAST(F1."[Торговые точки].[Адрес ТТ].[Адрес ТТ].[MEMBER_CAPTION]"AS NVARCHAR(150)) AS [Адрес ТТ],
	F1."[Measures].[Отгрузки шт]" AS [Отгрузки шт]
FROM OPENROWSET(
	'MSOLAP',
	'Provider=MSOLAP.3;...',
	'SELECT
		{[Measures].[Отгрузки шт]} ON 0,
		NON EMPTY
		[Города].[Город].[Город]*
		[Торговые точки].[Клиент].[Клиент]*
		[Торговые точки].[Код ТТ].[Код ТТ]*
		[Торговые точки].[Адрес ТТ].[Адрес ТТ]
		ON 1
	FROM
		(SELECT 
			([Время].[Месяц].&[2018-06-01T00:00:00],
			[Торговые точки].[Код ТТ].&[00001грд1]							
			) ON 0 FROM PROFIT)'
			) AS F1

Скажите, как избежать задваивании строк? Как убрать перенос строк в SQL?
...
Рейтинг: 0 / 0
22.06.2018, 09:40
    #39663946
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задваиваются строки из за переноса строк
оффтоп :)

авторо когда копируешь в эксель, сохраняешь в текстовом формате и потом импортируешь в эксель, а также сохраняешь в формате csv, то строки задваиваются.

- Доктор, когда я вот вот так вот делаю у меня болит..

- А вы вот вот так вот не делайте
...
Рейтинг: 0 / 0
22.06.2018, 09:41
    #39663947
Kopelly
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задваиваются строки из за переноса строк
ferzmikk,

Код: sql
1.
replace(Stroka,char(13)+char(10),'')
...
Рейтинг: 0 / 0
22.06.2018, 09:41
    #39663948
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задваиваются строки из за переноса строк
TaPaK,

Результат надо в excel вывести
...
Рейтинг: 0 / 0
22.06.2018, 09:45
    #39663950
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задваиваются строки из за переноса строк
Kopelly,

Спасибо, получилось!
...
Рейтинг: 0 / 0
22.06.2018, 09:55
    #39663955
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задваиваются строки из за переноса строк
А если надо наоборот выгрузить такие строки, то надо писать так получается вот:
Код: sql
1.
WHERE [Адрес ТТ] like '%' + char(13)+char(10) + '%'
...
Рейтинг: 0 / 0
22.06.2018, 10:05
    #39663964
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задваиваются строки из за переноса строк
Kopellyferzmikk,

Код: sql
1.
replace(Stroka,char(13)+char(10),'')

Такая запись ловит, если есть один перенос, но не ловит если больше одного переноса. По идее же replace должен учитывать любое количество переносов строк.

Как правильно написать?
...
Рейтинг: 0 / 0
22.06.2018, 10:09
    #39663970
Посетитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задваиваются строки из за переноса строк
ferzmikk,

переонсы, они разные бывают.
лучше сделать так
Код: sql
1.
replace(replace(Stroka,char(13),''),char(10),'')
...
Рейтинг: 0 / 0
22.06.2018, 10:27
    #39663991
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задваиваются строки из за переноса строк
Посетительпереонсы, они разные бывают.
лучше сделать так
Код: sql
1.
replace(replace(Stroka,char(13),''),char(10),'')

ferzmikk А если надо наоборот выгрузить такие строки, то надо писать так получается вот:
Код: sql
1.
WHERE [Адрес ТТ] like '%' + char(13)+char(10) + '%'

То тут в условии как для любого количества переносов писать?

И еще как получить количество переносов строк?
...
Рейтинг: 0 / 0
22.06.2018, 10:29
    #39663993
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задваиваются строки из за переноса строк
ferzmikk,
авторИ еще как получить количество переносов строк?

ну что-то вроде

Код: sql
1.
LEN(Stroka) - replace(replace(Stroka,char(13),''),char(10),'') 
...
Рейтинг: 0 / 0
22.06.2018, 10:38
    #39663999
Посетитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задваиваются строки из за переноса строк
ferzmikk,

Код: sql
1.
2.
WHERE [Адрес ТТ] like '%' + char(13) + '%'
   or [Адрес ТТ] like '%' + char(10) + '%'



а может даже хватить одного

Код: sql
1.
[Адрес ТТ] like '%' + char(10) + '%'



бо, без CR переносы - обычное явление, а вот без LF - не встречал.

ну и подсчитать, во избежание удвоения, лучше с небольшой поправкой

Код: sql
1.
LEN(Stroka) - len(replace(Stroka,char(10),'')) 
...
Рейтинг: 0 / 0
22.06.2018, 11:27
    #39664063
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задваиваются строки из за переноса строк
Может быть ОДИН перенос такой: LF+CR. А может быть такой: CR+LF. А может быть такой: одиночный CR или такой: одиночный LF.
Кстати, теоретически разные принтеры обрабатывают все эти случаи по-разному.
Так что количество всех вышеперечисленных комбинаций CR и LF можно посчитать так:
Код: sql
1.
SELECT (LEN(REPLACE([Адрес ТТ],' ',''))+LEN(REPLACE(REPLACE(REPLACE([Адрес ТТ],' ',''),CHAR(10)+CHAR(13),''),CHAR(13)+CHAR(10),'')))/2-LEN(REPLACE(REPLACE(REPLACE([Адрес ТТ],' ',''),CHAR(10),''),CHAR(13),''))

Идея простая: сначала подсчитываем пары CR+LF и LF+CR,
а потом прибавляем количество отдельно стоящих CR и LF после удаления из строки уже посчитанных пар.
Причём всё это после предварительного удаления всех пробелов, чтобы не нарваться на особенности работы LEN с хвостовыми пробелами.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Задваиваются строки из за переноса строк / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]