SQL Server - битовый тип данных соответствует строке «True» и «False» - PullRequest
0 голосов
/ 29 июня 2018

Я не уверен, было ли сделано что-то особенное с базой данных, с которой я работаю, но, оптимизируя старый код, я наткнулся на следующий (санированный) запрос:

SELECT Code
FROM GovernmentThing
WHERE IsGovernment = 'True'

Я проверил тип данных на IsGovernment, предполагая, что это varchar(5) или что-то подобное, только чтобы обнаружить, что это поле bit.

Затем я предположил, что код неправильный, и проверил, выполнив запрос, возвращающий поле IsGovernment. К моему большому удивлению, я обнаружил, что запрос возвращал только те строки, где IsGovernment было установлено в 1! Так как я тогда задавался вопросом, что вернется проверка на строковый литерал 'False', я проверил, просто чтобы найти, что возвращаются только нулевые значения !!

Возможно, я что-то пропустил где-то в обновлениях TSQL или что есть какая-то хитрая конфигурация, которая делает эту работу, но ... я никогда не слышал об этом раньше.

Может кто-нибудь, пожалуйста, просветите меня - это где-то задокументировано, или ???

SQL Server 2012

1 Ответ

0 голосов
/ 29 июня 2018

Вот выдержка из документации по типу данных , которая описывает это поведение:

Строковые значения TRUE и FALSE могут быть преобразованы в битовые значения: TRUE конвертируется в 1, а FALSE - в 0.

...