Предположим, что у меня есть таблица, как:IsNull и тип данных в SQL Server
Tab(MyDate datetime null, MyIs bit null, ...)
Тогда у меня есть SQL Как
select Isnull(MyDate, 1), IsNull(MyIs, 999) from Tab;
Если MyDate
, MyIs
значение в БД null
, результат:
MyDate MyIs
1900-01-02 00:00:00.000 1
Не ожидаемое значение, например
MyDate MyIs
1 999
Таким образом, похоже, что возвращаемое значение основано на типе данных столбца. Как решить эту проблему?
Для моего теста, как указано выше, я получил только одну строку из таблицы.
Что произойдет, если некоторые строки имеют действительные даты - то, что тип данных столбца даты тогда? – Dave
если нет нулевого значения, это нормально. – KentZhou
'MyDate' возвращается как один день после начала времени, по запросу. «MyIs» - это значение, отличное от 0. Нет выбора, если вы «BIT». Если вы 'CAST'' MyIs' в 'INT', то вы можете получить желаемый результат. «DATETIME» просто не будет 1, если вы не всегда будете отображать его как количество дней с момента BoT. – HABO