Я не понимаю, почему у вас так много предложений ... Если поле пустое, вы хотите заменить его на "-" ... У вас есть 3 поля, у вас должно быть максимум 3 предложения ...(Обратите внимание, это псевдокод, в соответствии с вашим вопросом)
if (row count == 1)
{
if (firstNull)
{
//Replace first.label with "-"
}
if (secondNull)
{
//Replace second.label with "-"
}
if (thirdNull)
{
//Replace third.label with "-"
}
}
else
{
// Replace all labels with "-"
}
Вам не нужно обрабатывать каждую комбинацию из 3 полей как отдельные ifs ...
В идеале ваши поля будутхраниться в какой-то коллекции (которую вы пропустили), таким образом вы сможете сделать что-то вроде:
if(row count == 1)
{
foreach(field in Fields)
{
if(fieldIsNull)
{
// Set corresponding label to "-"
}
}
}
В качестве отступления, если вы всегда хотите сделать перевод при чтении избазы данных, так что, если это NULL, вы хотите '-', тогда может иметь смысл обрабатывать это как часть вашего предложения select.Итак, с Oracle вы могли бы иметь:
SELECT
NVL(FIELD1, '-'),
NVL(FIELD2, '-'),
NVL(FIELD3, '-')
FROM
SOME_TABLE
Я думаю, что для SQLServer эквивалент будет:
SELECT
ISNULL(FIELD1, '-'),
ISNULL(FIELD2, '-'),
ISNULL(FIELD3, '-')
FROM
SOME_TABLE
Оба из них будут означать, что база данных вернула '-' вместоNULL, если столбец был пуст.Это, конечно, предполагает, что возвращаемый столбец является строковым типом.Если нет, вам придется выполнить соответствующее преобразование на поле, чтобы превратить его в единицу.