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

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

Я просто обновляюсь до 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». Это мелочь, но я счастлив.

Ответы [ 3 ]

3 голосов
/ 04 декабря 2008

Вы всегда могли использовать «Истина» и «Ложь» для сравнения со столбцами BIT ... Я думаю, что это изменение "принудительно" - это хорошо, чтобы было ясно, что поле является BIT, и не INT.

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

1 голос
/ 11 марта 2010

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

1 голос
/ 05 декабря 2008

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

...