Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Медленное выполнение добавления резултата в длинную строку  [new]
asics168
Member

Откуда:
Сообщений: 10
Привет!
по результатам выборки из базы надо сформировать HTML - т.е. длинную строку

выбрал результаты во временную переменную табличную, потом в цикле из нее достаю и формирую @HTML - varchar(max),

если в результирующем наборе около 15000 строк - результата так и не дождался, SQL Server 2008 R2,

пробовал собирать подстроку в доп. переменную и потом уже сформированную подстроку добавлять в @HTML - помогло - но проблему не решило - десятки минут.. если комментарить set @HTML += @NewString - то выполняется за 20 сек.
есть ли способ как то убыстрить?
        while (@rowCount_f >= @j )
                                       begin
                                                select
                                               
                                                    
                                                    @RowCount = NumRow,
                                                    @l1=ISNULL(l1,''),
                                                    @l2=ISNULL(l2,''),
                                                    @l3=ISNULL(l3,''),
                                                    @l4=ISNULL(l4,''),
                                                    @l5=ISNULL(l5,''),
                                                    @l6=ISNULL(l6,''),
                                                    @l7=ISNULL(l7,''),
                                                    @l8=ISNULL(l8,''),
                                                    @l9=ISNULL(l9,''),
                                                    @PAT = PAT
                                                  
                                                from @DC
                                                where NumRow = @j
                                                   
                                                                                            
                                                     
                                       
                                        
                                        
                                          set @NewString  += '<tr>'
                                                   + '<td' + @classMC+ '><FD.text>' + @l1+ '</FD.text></td>'
                                                   + '<td' + @classMC + '><FD.text>' + @l2+ '</FD.text></td>'
                                                   + '<td' + @classMC + '><nobr><FD.date>' + @l3 + '</FD.date></nobr></td>'
                                                   + '<td' + @classLastUp + '><FD.text>' + @l4 + '</FD.text></td>'
                                                   + '<td' + @classLastUp + '><FD.text>' + @l5 + '</FD.text></td>'
                                                   + '<td' + @classLastUp + '><FD.text>' + @l6 + '</FD.text></td>'
                                                   + '<td' + @classLastUp + '><nobr><FD.text>' + @l7 + '</FD.text></nobr></td>'
                                                   + '<td' + @classMC + '><FD.text>' + @l8 + '</FD.text></td>'
                                                   + '<td' + @classLastUp + '><FD.text>' + @l9 + '</FD.text></td>'
                                                   +'</tr>';
                
        set @HTML += @NewString
       
     set @j += 1;    
    end;
7 дек 14, 11:38    [16962226]     Ответить | Цитировать Сообщить модератору
 Re: Медленное выполнение добавления резултата в длинную строку  [new]
JeStone
Member

Откуда:
Сообщений: 248
asics168,
Какой адский изврат. А одним запросом все это сделать навыков не хватило?
7 дек 14, 11:45    [16962241]     Ответить | Цитировать Сообщить модератору
 Re: Медленное выполнение добавления резултата в длинную строку  [new]
aleks2
Guest
JeStone
asics168,
Какой адский изврат. А одним запросом все это сделать навыков не хватило?


Как бы "один запрос" - не спасет. Хотя цикл тут не нужен.

Тредстартеру: а нафига тебе именно ОДНА переменная?

Чо бы таблицей не обойтись?
7 дек 14, 11:52    [16962256]     Ответить | Цитировать Сообщить модератору
 Re: Медленное выполнение добавления резултата в длинную строку  [new]
asics168
Member

Откуда:
Сообщений: 10
не очень понимаю.. формируется HTML текст, который затем записывается во внешний файл и в таблицу результатов - в столбец varchar(max). Если кто знает как сделать - с удовольствием выслушаю..
пс. про один запрос вообще не понял..
7 дек 14, 11:55    [16962267]     Ответить | Цитировать Сообщить модератору
 Re: Медленное выполнение добавления резултата в длинную строку  [new]
aleks2
Guest
set @HTML = ( select 
                      '<tr>'
                    + '<td' + @classMC+ '><FD.text>' + ISNULL(l1,'')+ '</FD.text></td>'
                    + '<td' + @classMC + '><FD.text>' + l2+ '</FD.text></td>'
                    + '<td' + @classMC + '><nobr><FD.date>' + l3 + '</FD.date></nobr></td>'
                    + '<td' + @classLastUp + '><FD.text>' + l4 + '</FD.text></td>'
                    + '<td' + @classLastUp + '><FD.text>' + l5 + '</FD.text></td>'
                    + '<td' + @classLastUp + '><FD.text>' + l6 + '</FD.text></td>'
                    + '<td' + @classLastUp + '><nobr><FD.text>' + l7 + '</FD.text></nobr></td>'
                    + '<td' + @classMC + '><FD.text>' + l8 + '</FD.text></td>'
                    + '<td' + @classLastUp + '><FD.text>' + l9 + '</FD.text></td>'
                    +'</tr>'
              from @DC
              where NumRow <= @rowCount_f 
              for xml path('')
);
7 дек 14, 11:59    [16962279]     Ответить | Цитировать Сообщить модератору
 Re: Медленное выполнение добавления резултата в длинную строку  [new]
JeStone
Member

Откуда:
Сообщений: 248
asics168
не очень понимаю.. формируется HTML текст, который затем записывается во внешний файл и в таблицу результатов - в столбец varchar(max). Если кто знает как сделать - с удовольствием выслушаю..
пс. про один запрос вообще не понял..

У тебя
select            
@RowCount = NumRow,
@l1=ISNULL(l1,''),
@l2=ISNULL(l2,''),
@l3=ISNULL(l3,''),
@l4=ISNULL(l4,''),
@l5=ISNULL(l5,''),
@l6=ISNULL(l6,''),
@l7=ISNULL(l7,''),
@l8=ISNULL(l8,''),
@l9=ISNULL(l9,''),
@PAT = PAT
from @DC
where NumRow = @j

Выполняется 15 ТЫСЯЧ раз. Это по твоему нормально? Все, что ты написал можно выбрать в один запрос.
7 дек 14, 11:59    [16962280]     Ответить | Цитировать Сообщить модератору
 Re: Медленное выполнение добавления резултата в длинную строку  [new]
asics168
Member

Откуда:
Сообщений: 10
хм.. да действительно.. посмотрел - я так не сделал потому что есть некая обработка для каждой строки в зависимости от данных - расстановка "правильных" классов :

      while (@rowCount_f >= @j )
                                       begin
                                                select
                                               
                                                    
                                                    @RowCount = NumRow,
                                                    @l1=ISNULL(l1,''),
                                                    @l2=ISNULL(l2,''),
                                                    @l3=ISNULL(l3,''),
                                                    @l4=ISNULL(l4,''),
                                                    @l5=ISNULL(l5,''),
                                                    @l6=ISNULL(l6,''),
                                                    @l7=ISNULL(l7,''),
                                                    @l8=ISNULL(l8,''),
                                                    @l9=ISNULL(l9,''),
                                                    @PAT = PAT
                                                  
                                                from @DC
                                                where NumRow = @j
                                                   
                                                set @NewString = '';                                                
                                                     
                                                     
                                         -- стили
                                        if (@prevPAT = @PAT)
                                                           begin
                                                               if (@J = @rowCount_f) -- последняя строка
                                                                  begin
                                                                       set @classMC = ' class="tdLast"';
                                                                       set @classLast = ' class="tdLast"';
                                                                       set @classTdc = ' class="tdcLast"';
                                                                       set @classLastUp = ' class="tdLastUp"';
                                                                   end  
                                                                   else 
                                                                   begin
                                                                       set @classMC = ' class="tdMC"';
                                                                       set @classLast = '';
                                                                       set @classTdc = ' class="tdc"';
                                                                       set @classLastUp = '';
                                                                   end;  
                                                                                                          
                                                                  set @l2 = '';
                                                                 set @l1 = ''; 
                                                                 set @l3 = ''; 
                                                                 set @l8 = ''; 
                                                              end
                                                               else
                                                               begin                                              
                                                                   if (@J = @rowCount_f)
                                                                   begin
                                                                       set @classMC = ' class="tdLastUp"';
                                                                       set @classLast = ' class="tdLastUp"';
                                                                       set @classTdc = ' class="tdcLast"' ;
                                                                       set @classLastUp = ' class="tdLastUp"';
                                                                   end  
                                                                   else 
                                                                   begin
                                                                       set @classMC = ' class="tdMC"';
                                                                       set @classLast = '';
                                                                       set @classTdc = ' class="tdc"';
                                                                       set @classLastUp = '';
                                                                       set @class = '';
                                                                       set @classMC = '';
                                                       
                                                                       set @prevPAT = @PAT;
                                                                   end;     
                                                               end;
                                        
                                        
                                        
                                          set @NewString = '<tr>'
                                                   + '<td' + @classMC+ '><FD.text>' + @l1+ '</FD.text></td>'
                                                   + '<td' + @classMC + '><FD.text>' + @l2+ '</FD.text></td>'
                                                   + '<td' + @classMC + '><nobr><FD.date>' + @l3 + '</FD.date></nobr></td>'
                                                   + '<td' + @classLastUp + '><FD.text>' + @l4 + '</FD.text></td>'
                                                   + '<td' + @classLastUp + '><FD.text>' + @l5 + '</FD.text></td>'
                                                   + '<td' + @classLastUp + '><FD.text>' + @l6 + '</FD.text></td>'
                                                   + '<td' + @classLastUp + '><nobr><FD.text>' + @l7 + '</FD.text></nobr></td>'
                                                   + '<td' + @classMC + '><FD.text>' + @l8 + '</FD.text></td>'
                                                   + '<td' + @classLastUp + '><FD.text>' + @l9 + '</FD.text></td>'
                                                   +'</tr>';
                
     set @Html = @Html + @NewString;
       
     set @j += 1;    
    end;



сейчас вижу, что эту "логику" можно реализовать с помощью Case ов.. наверное это правильный путь - надеюсь даст выигрыш в скорости, но все таки - ну 15000 раз цикл - и что? это нагрузка для сервака? вся скорость теряется здесь:

  set @Html = @Html + @NewString;


в присваивании в длинную строку, TSQL это делает посимвольно чтоли? сдвигая всю длину по одному чтоли? кстати в MS SQL 2012 на моем ноуте этот же цикл 7 секунд, а тут на 16 многопроцессорном серваке с кучей памяти и не загруженном - такое..
7 дек 14, 12:11    [16962334]     Ответить | Цитировать Сообщить модератору
 Re: Медленное выполнение добавления резултата в длинную строку  [new]
Glory
Member

Откуда:
Сообщений: 104751
asics168
вся скорость теряется здесь:

  set @Html = @Html + @NewString;



в присваивании в длинную строку

Это вы сами решили, или как то замерили ?
7 дек 14, 12:14    [16962346]     Ответить | Цитировать Сообщить модератору
 Re: Медленное выполнение добавления резултата в длинную строку  [new]
asics168
Member

Откуда:
Сообщений: 10
Glory
asics168
вся скорость теряется здесь:

  set @Html = @Html + @NewString;



в присваивании в длинную строку

Это вы сами решили, или как то замерили ?


Замерил, только что еще раз - закомментированной этой строкой - 19000 строк - 40 сек.
с раскомментированной за теже 40 сек 2200 строк ( поставил в цикл пром.принт в обоих замерах) , скорость далее начинает падать, похоже в зависимости от длинны формируемой @HTML - за 8 минут не дождался
7 дек 14, 12:23    [16962391]     Ответить | Цитировать Сообщить модератору
 Re: Медленное выполнение добавления резултата в длинную строку  [new]
JeStone
Member

Откуда:
Сообщений: 248
asics168
Glory
пропущено...

Это вы сами решили, или как то замерили ?


Замерил, только что еще раз - закомментированной этой строкой - 19000 строк - 40 сек.
с раскомментированной за теже 40 сек 2200 строк ( поставил в цикл пром.принт в обоих замерах) , скорость далее начинает падать, похоже в зависимости от длинны формируемой @HTML - за 8 минут не дождался

Попробуй сделать через групповую конкатенацию. У тебя исчезнет set @HTML += @NewString
После этого расскажешь, так же долго выполняется на сервере/ноутбуке или нет
7 дек 14, 12:27    [16962405]     Ответить | Цитировать Сообщить модератору
 Re: Медленное выполнение добавления резултата в длинную строку  [new]
asics168
Member

Откуда:
Сообщений: 10
JeStone
asics168
пропущено...


Замерил, только что еще раз - закомментированной этой строкой - 19000 строк - 40 сек.
с раскомментированной за теже 40 сек 2200 строк ( поставил в цикл пром.принт в обоих замерах) , скорость далее начинает падать, похоже в зависимости от длинны формируемой @HTML - за 8 минут не дождался

Попробуй сделать через групповую конкатенацию. У тебя исчезнет set @HTML += @NewString
После этого расскажешь, так же долго выполняется на сервере/ноутбуке или нет


Спасибо за совет.. чет не соображу - как это сделать.. что это такое вообще..
7 дек 14, 12:53    [16962513]     Ответить | Цитировать Сообщить модератору
 Re: Медленное выполнение добавления резултата в длинную строку  [new]
JeStone
Member

Откуда:
Сообщений: 248
asics168
JeStone
пропущено...

Попробуй сделать через групповую конкатенацию. У тебя исчезнет set @HTML += @NewString
После этого расскажешь, так же долго выполняется на сервере/ноутбуке или нет


что это такое вообще..

Извените за мой французский, имелся ввиду FOR XML PATH('')
Объедините все в один запрос по типу
set @HTML = ( select 
                      '<tr>'
                    + '<td' + @classMC+ '><FD.text>' + ISNULL(l1,'')+ '</FD.text></td>'
                    + '<td' + @classMC + '><FD.text>' + l2+ '</FD.text></td>'
                    + '<td' + @classMC + '><nobr><FD.date>' + l3 + '</FD.date></nobr></td>'
                    + '<td' + @classLastUp + '><FD.text>' + l4 + '</FD.text></td>'
                    + '<td' + @classLastUp + '><FD.text>' + l5 + '</FD.text></td>'
                    + '<td' + @classLastUp + '><FD.text>' + l6 + '</FD.text></td>'
                    + '<td' + @classLastUp + '><nobr><FD.text>' + l7 + '</FD.text></nobr></td>'
                    + '<td' + @classMC + '><FD.text>' + l8 + '</FD.text></td>'
                    + '<td' + @classLastUp + '><FD.text>' + l9 + '</FD.text></td>'
                    +'</tr>'
              from @DC
              where NumRow <= @rowCount_f 
              for xml path('')
);

В данном случае исчезнет set @HTML += @NewString. B после этого скажите, все ли выполняется на столько долго как раньше или нет.
7 дек 14, 13:02    [16962556]     Ответить | Цитировать Сообщить модератору
 Re: Медленное выполнение добавления резултата в длинную строку  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
asics168,

не совсем в тему, но похожий случай из правктики
собирал я динамический html в js прямо на странице в браузере
тоже вот так вот плюсовал содержимое в длинную строку и видел сильные тормоза
оказалось что таки криво оно там реализовано
строки это классы и пр...
в итоге нашел что можно сделать заливку плюсуемых кусочков в Array (типа аналог sql таблицы)
а его потом array.join() махом склеить в доли секунды
потому как этот join реализован низкоуровневой функцией типа на ассемблере
работает напрямую мимо всей этой классовой стркутуры и потому летает

имеется у меня также система которая выдает html из sql
дак там реализовано следующим образом
sql в запросах выдает таки кусочки html
а на среднем слое каждая строка запроса пихается в выходной поток и всё
т.е даже цели такой не возникает чтобы склеить большой кусок
хотя маленькие куски я так клею, приходится

конечно могут существовать задачи похожие на вашу, но я предпочитю их решать не в sql
соответственно конкретно с таким не сталкивался и решения не скажу
могу посоветовать полазить по коду системных прицедур sp_.....
там обычно бывают достаточно оптимальные решения
помнится была какая-то которая исполняет код положенный в табличку
7 дек 14, 13:05    [16962570]     Ответить | Цитировать Сообщить модератору
 Re: Медленное выполнение добавления резултата в длинную строку  [new]
asics168
Member

Откуда:
Сообщений: 10
Спасибо, сейчас попробую, по поводу Ноута похоже наврал, на нем просто база обрезанная, записей меньше было..
но мне не понятно как реализовать следующую вещь, там классы в текущей записи проставляются в зависимости от предидущей записи,т.е. если клиент тот же , то не печатаеся ряд полей ( его номер и т.д.) а также не выводятся горизонтальны линии таблицы, т.е. подряд повторяющиеся ячейки визуально обьединяются..
7 дек 14, 13:16    [16962620]     Ответить | Цитировать Сообщить модератору
 Re: Медленное выполнение добавления резултата в длинную строку  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
asics168,

не надо смешивать генерацию самого html со склеиванием
лейте в промежуточную табличку построчно
обрабатывайте ее хоть сколько раз до того пока готово не будет
а потом только ее выводим занимайтесь в котором собстенно и проблема
7 дек 14, 13:20    [16962633]     Ответить | Цитировать Сообщить модератору
 Re: Медленное выполнение добавления резултата в длинную строку  [new]
asics168
Member

Откуда:
Сообщений: 10
leov
asics168,

не надо смешивать генерацию самого html со склеиванием
лейте в промежуточную табличку построчно
обрабатывайте ее хоть сколько раз до того пока готово не будет
а потом только ее выводим занимайтесь в котором собстенно и проблема


я понял, спасибо за подсказку, так и сделаю, замерил - 7 секунд примерно 19000 записей.
7 дек 14, 14:15    [16962808]     Ответить | Цитировать Сообщить модератору
 Re: Медленное выполнение добавления резултата в длинную строку  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4902
asics168
leov
asics168,

не надо смешивать генерацию самого html со склеиванием
лейте в промежуточную табличку построчно
обрабатывайте ее хоть сколько раз до того пока готово не будет
а потом только ее выводим занимайтесь в котором собстенно и проблема


я понял, спасибо за подсказку, так и сделаю, замерил - 7 секунд примерно 19000 записей.


Может вам на .NET это написать? Или под SSIS? Дабы воспользоваться правильными XML библиотеками.
8 дек 14, 09:35    [16964580]     Ответить | Цитировать Сообщить модератору
 Re: Медленное выполнение добавления резултата в длинную строку  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
aleks2
set @HTML = ( select 
                      '<tr>'
                    + '<td' + @classMC+ '><FD.text>' + ISNULL(l1,'')+ '</FD.text></td>'
                    + '<td' + @classMC + '><FD.text>' + l2+ '</FD.text></td>'
                    + '<td' + @classMC + '><nobr><FD.date>' + l3 + '</FD.date></nobr></td>'
                    + '<td' + @classLastUp + '><FD.text>' + l4 + '</FD.text></td>'
                    + '<td' + @classLastUp + '><FD.text>' + l5 + '</FD.text></td>'
                    + '<td' + @classLastUp + '><FD.text>' + l6 + '</FD.text></td>'
                    + '<td' + @classLastUp + '><nobr><FD.text>' + l7 + '</FD.text></nobr></td>'
                    + '<td' + @classMC + '><FD.text>' + l8 + '</FD.text></td>'
                    + '<td' + @classLastUp + '><FD.text>' + l9 + '</FD.text></td>'
                    +'</tr>'
              from @DC
              where NumRow <= @rowCount_f 
              for xml path('')
);
Алекс, добрый день!
Этот запрос нормально отрабатывает, да?

В общем, надо как-то так:
set @HTML = ( select 
                      '<tr>'
                    + '<td' + @classMC+ '><FD.text>' + ISNULL(l1,'')+ '</FD.text></td>'
                    + '<td' + @classMC + '><FD.text>' + l2+ '</FD.text></td>'
                    + '<td' + @classMC + '><nobr><FD.date>' + l3 + '</FD.date></nobr></td>'
                    + '<td' + @classLastUp + '><FD.text>' + l4 + '</FD.text></td>'
                    + '<td' + @classLastUp + '><FD.text>' + l5 + '</FD.text></td>'
                    + '<td' + @classLastUp + '><FD.text>' + l6 + '</FD.text></td>'
                    + '<td' + @classLastUp + '><nobr><FD.text>' + l7 + '</FD.text></nobr></td>'
                    + '<td' + @classMC + '><FD.text>' + l8 + '</FD.text></td>'
                    + '<td' + @classLastUp + '><FD.text>' + l9 + '</FD.text></td>'
                    +'</tr>'
              from @DC
              where NumRow <= @rowCount_f 
              for xml path(''),type
).value('.','nvarchar(max)');
8 дек 14, 09:59    [16964674]     Ответить | Цитировать Сообщить модератору
 Re: Медленное выполнение добавления резултата в длинную строку  [new]
asics168
Member

Откуда:
Сообщений: 10
Заказывали как раз все сделать на сервере T-SQL ем .. сделал через for xml path('') - предварительно сгенерив в поле NewString полностью подстроку и собираю тест потом так:
 set @HTML += ( select NewString  from @DC
          for xml path('')


такой конструкции, раньше не пользовал, прочитал , что для генерации xml..
из неприятного - все < > внутри сформированных подстрок заменяются на < >
и вначале каждой строки добавляется тег <NewString> - не страшно но не нужно

можно конечно все это потом перекодировать вручную, заменяя подстроки но боюсь это опять сьест весь выигрыш в скорости..
есть способы, параметры не перекодировать < и > ? не писать имя узла ( строки)
8 дек 14, 10:12    [16964714]     Ответить | Цитировать Сообщить модератору
 Re: Медленное выполнение добавления резултата в длинную строку  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
asics168,

я ж в предыдущем сообщении написал как надо
8 дек 14, 10:26    [16964786]     Ответить | Цитировать Сообщить модератору
 Re: Медленное выполнение добавления резултата в длинную строку  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
asics168,

насчет xml ничего не скажу, не спец я в нем
а вот без order by вам тут точно не обойтись
8 дек 14, 10:27    [16964793]     Ответить | Цитировать Сообщить модератору
 Re: Медленное выполнение добавления резултата в длинную строку  [new]
asics168
Member

Откуда:
Сообщений: 10
iap
asics168,

я ж в предыдущем сообщении написал как надо


Сделал иак :
 set @HTML += ( select NewString  from @DC
     for xml path('') 
    
     ,type
       ).value('.','nvarchar(max)');
                   


выдает такую ошибку :
SELECT failed because the following SET options have incorrect settings: 'CONCAT_NULL_YIELDS_NULL'. Verify that SET options are correct for use with indexed views and/or indexes on computed columns and/or filtered indexes and/or query notifications and/or XML data type methods and/or spatial index operations.


у меня стоит SET CONCAT_NULL_YIELDS_NULL OFF; если закомментить, я так понимаю становится ON - возвращается пустая строка..
8 дек 14, 10:47    [16964917]     Ответить | Цитировать Сообщить модератору
 Re: Медленное выполнение добавления резултата в длинную строку  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
asics168,

Во-первых, не комментировать надо, а заменить на SET CONCAT_NULL_YIELDS_NULL ON.
Во-вторых, если написать ISNULL(NewString, N''), что получится?
Вы знаете что получается, если к чему-нибудь добавить NULL?
8 дек 14, 10:51    [16964940]     Ответить | Цитировать Сообщить модератору
 Re: Медленное выполнение добавления резултата в длинную строку  [new]
aleks2
Guest
iap
Алекс, добрый день!
Этот запрос нормально отрабатывает, да?

Вот привязался - я ж его писал в блокноте "для примеру".
Отполированный я не обещал.
8 дек 14, 11:30    [16965153]     Ответить | Цитировать Сообщить модератору
 Re: Медленное выполнение добавления резултата в длинную строку  [new]
asics168
Member

Откуда:
Сообщений: 10
iap
asics168,

Во-первых, не комментировать надо, а заменить на SET CONCAT_NULL_YIELDS_NULL ON.
Во-вторых, если написать ISNULL(NewString, N''), что получится?
Вы знаете что получается, если к чему-нибудь добавить NULL?


Заменил на SET CONCAT_NULL_YIELDS_NULL ON.
Когда параметр SET CONCAT_NULL_YIELDS_NULL установлен в ON, объединение значения NULL со строкой дает в результате NULL.  Например, SELECT 'abc' + NULL дает в результате NULL. Когда параметр SET CONCAT_NULL_YIELDS_NULL установлен в значение OFF, объединение значения NULL со строкой дает в результате исходную строку (значение NULL рассматривается как пустая строка). Например, SELECT 'abc' + NULL дает в результате abc. 


поэтому пустые строки и стали сьедать все, проставил везде IsNull() - теперь все ОК, скобки не перекодируются (< >) ,<NewString> не пишется..
Спасибо!
8 дек 14, 11:31    [16965160]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить