Тип данных бит соответствует любой строке чисел - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть столбец в моей базе данных с битом типа данных.Он содержит только 1 или 0. Если я сопоставлю этот столбец в предложении where с «0», он просто возвращает строки с 0. Однако, если у меня есть этот столбец и сопоставим его со строкой случайных чисел, он будет возвращать строки в любом местестолбец 1. Почему это так?

SELECT  
aBitColumn
FROM aTableName
where aBitColumn='7256'

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Во-первых, SQL Server обычно не преобразует строки в биты.Итак, что вы видите, это преобразование целого числа в бит.Одинарные кавычки не имеют значения.

Соглашение состоит в том, что любое число, отличное от 0, преобразуется в бит 1.

. Я бы вместо этого предложил выполнить преобразование в другомнаправление:

where convert(varchar(255), aBitColumn) = '7256'

Не полагайтесь на неявное преобразование.

0 голосов
/ 28 ноября 2018

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

Из документов Microsoft

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...