2016-11-09 9 views
1

Я понимаю, что в битовых полях можно хранить только 0 или 1. У меня есть форма InfoPath, которую я наследую, и когда я разбираю XML из формы и сохраняю данные в базе данных, один узлов XML имеет 1 или 2, и он сохраняется в битовом поле. Независимо от того, имеет ли поле 1 или 2 в нем, поле бит хранит только 1. Мой вопрос: в битовом поле хранится 0 как 0, но он также сохраняет ненулевые символы как 1? Таким образом, 2 также получает хранится как 1?SQL-бит, хранящее ненулевой символ

ответ

3

Да, не 0 значения указаны как 1.

От MSDN:

SQL-сервер базы данных Engine оптимизирует хранение битовых столбцов. Если в таблице есть 8 или менее столбцов, столбцы хранятся как 1 байт. Если имеется от 9 до 16 бит столбцов, столбцы хранятся как 2 байта и так далее.

строковые значения ИСТИНА и ЛОЖЬ могут быть преобразованы в битовых значений: TRUE, преобразуется в 1, и значение FALSE преобразуется в 0.

Преобразование бита способствует любое значение отличное от нуля до 1.

Test SQL:

Create Table Test (A bit); 

Insert Test Values (-1), (0), (1), (2) 

Select * From Test 

Результаты:

A 
---- 
1 
0 
1 
1