Проблема оператора 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
Ссылка