Проблема оператора SELECT - объединение данных разных полей в одной ячейке Gridview

Я использую следующую инструкцию SELECT для Gridview:

  SelectCommand="SELECT ID, Date, Train, I_R, Dir_Ind, Detn, Rly, DiV, Loco, Shed, locoClass, loco_type,
(maj_sch_type + ','+ ' ' + maj_sch_place +',' +' '+ (CAST(maj_sch_dt as VARCHAR(11)) + ' '+'/' 
+ ' ' + min_sch_type +',' + ' ' + min_sch_place + ',' + ' '+(CAST(min_sch_dt as VARCHAR   (11))) ))    as "major",
 Equipt, I_R, reason 
 FROM PunctualityMain Order by Date ASC"

С учетом вышесказанного, я получаю результаты в одной ячейке из 6 (3 + 3) различных полей данных SQL как

 POH, KPA, Jan 2 2012 / IB, Shed, Apr 18 2012

Проблема заключается в том, что всякий раз, когда данные в любой группе из 3 полей (до или после '/') являются пустыми, ячейка Gridview остается полностью пустой. Если обе группы полей имеют данные, то отображение Gridview в порядке, как указано выше. Можно ли изменить инструкцию SELECT для отображения данных в Gridview с какой-либо одной группой полей пустыми?

1 ответ

Решение

Если вы попытаетесь объединить пустую строку с ненулевой строкой, результат будет нулевым.

Select NULL + 'test' 

это вернет NULL.

Кроме того, я думаю, что ваш код не слишком хорошо копировал вставку в ваш вопрос, но вам нужно использовать ISNULL() функция. Я думаю, вы можете понять суть. Вам, вероятно, придется немного очистить код для его запуска. Просто оберните каждое поле, которое вы объединяете, с ISNULL(MyField, '')

SELECT 
    ID, 
    Date, 
    Train, 
    I_R, 
    Dir_Ind, 
    Detn, 
    Rly,    
    DiV, 
    Loco, 
    Shed, 
    locoClass, 
    loco_type,
    (isnull(maj_sch_type, '') + ', ' + isnull(maj_sch_place, '') +', '+ (isnull(CAST(maj_sch_dt as VARCHAR(11), '')) + ' / ' + isnull(min_sch_type, '') +', ' + isnull(min_sch_place, '') + ', '+ (isnull(CAST(min_sch_dt as VARCHAR   (11)), '')) ))    as "major",
     Equipt, 
    I_R, 
    reason 
 FROM PunctualityMain 
 Order by Date ASC

Ссылка

Другие вопросы по тегам