SQL Server 2008 - Редактирование таблиц: битовые столбцы требуют «True» или «False»

StackOverflow https://stackoverflow.com/questions/341201

Вопрос

Не столько вопрос, сколько наблюдение ...

Я просто обновляюсь до SQL Server 2008 на моей машине для разработки в ожидании обновления моих живых приложений. Я не ожидал никаких проблем, так как [я думаю] я обычно использую стандартный T-SQL и, вероятно, не слишком далеко от стандартного ANSI SQL. Пока все хорошо, но меня действительно поразило очень простое изменение:

Я создавал простую небольшую справочную таблицу для хранения списка кодов и включения битового столбца для указания текущего кода по умолчанию. Но когда я использовал новую / модифицированную опцию «Edit Top 200 Rows» и ввел мои 0 и 1 в битовый столбец, я получил ошибку:

  

'Неверное значение для ячейки - строка была   не распознан как действительное логическое значение

После небольшого почесывания головы я попробовал True и False - и они сработали.

Похоже, что для этой новой функции редактирования требуется набрать 4 или 5 символов, а не предыдущую 1.

Проверяя далее, мы все еще можем использовать «...where bitval = 1», но теперь можем также использовать «...where bitval = 'true'». Но любые возвращенные результаты отображают эти битовые столбцы как 0 или 1.

Все это звучит как полшага назад. Не конец света, но и ненужное раздражение.

Есть ли у кого-нибудь понимание этого вопроса? Или есть какие-то новые Gotchas с SQL Server 2008?

Обновление 2012 года: Только что установив SQL Server 2012, я заметил, что это поведение было «исправлено». Как и раньше, теперь я могу вводить 1/0, а не True / False непосредственно в строки, используя опцию «Edit Top 200 Rows». Это мелочь, но я счастлив.

Это было полезно?

Решение

За исключением того, что они взорвали его и только наполовину применили правило. Попробуйте использовать ... = True в операторе обновления и посмотрите, что произойдет. Либо пройти весь путь или нет вообще. Извините, Microsoft, не могу дать вам никаких оценок на этом

Другие советы

Вы всегда могли использовать 'True' и 'False' для сравнения со столбцами BIT ... Я думаю, что это изменение в " force " хорошо, чтобы было ясно, что поле - это BIT, а не INT.

Лично мне нравится, что C # не поддерживает " if (0) ... " Я думаю, это просто предпочтение ясности.

Только что нашел (после подготовки чего-то еще) Встроенный в дизайн

scroll top