首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Microsoft SQL Server中是否有像MySQL中那样的布尔数据类型?

问Microsoft SQL Server中是否有像MySQL中那样的布尔数据类型?
EN

Stack Overflow用户
提问于 2010-06-29 13:16:09
回答 9查看 847.2K关注 0票数 408

Microsoft SQL Server中是否有像MySQL中那样的布尔数据类型?

如果不是,MS SQL Server中的替代方案是什么?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-06-29 13:17:46

您可以使用BIT数据类型来表示布尔数据。BIT字段的值为1、0或null。

票数 561
EN

Stack Overflow用户

发布于 2010-06-29 13:19:07

您可能想要使用BIT数据类型,可能设置为NOT NULL

引用MSDN article

bit (Transact-SQL)

可以接受值1、0或NULL的整数数据类型。

SQL Server数据库引擎优化了位列的存储。如果表中有8个或更少的位列,则将这些列存储为1个字节。如果有9到16位的列,这些列将存储为2个字节,依此类推。

字符串值TRUE和FALSE可以转换为位值: TRUE转换为1,FALSE转换为0。

票数 97
EN

Stack Overflow用户

发布于 2014-12-03 01:03:48

您正在寻找bit。它存储1或0(或NULL)。

或者,您可以使用字符串'true'和'false'代替1或0,如下所示-

代码语言:javascript
复制
declare @b1 bit = 'false'
print @b1                    --prints 0

declare @b2 bit = 'true'
print @b2                    --prints 1

此外,任何非0值(无论是正的还是负的)都会计算为(或在某些情况下转换为) 1。

代码语言:javascript
复制
declare @i int = -42
print cast(@i as bit)    --will print 1, because @i is not 0

请注意,SQL Server使用三值逻辑(true、false和NULL),因为NULL可能是bit数据类型的值。以下是相关的真值表-

​

​

关于三值逻辑的更多信息-

Example of three valued logic in SQL Server

http://www.firstsql.com/idefend3.htm

https://www.simple-talk.com/sql/learn-sql-server/sql-and-the-snare-of-three-valued-logic/

票数 61
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3138029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档