Sql server SQL Management Studio是否希望在不进行手动转换的情况下自动将位显示为真/假?

Sql server SQL Management Studio是否希望在不进行手动转换的情况下自动将位显示为真/假?,sql-server,Sql Server,更新: 似乎没有人不理解我的问题 这位人士表示,在这方面,我的看法是: 我在SQLServer2000中有一个带有BitValue列的表。但是,确实如此 在SQL Server Management Studio中显示为真/假 一位用户表示,在这方面 在SQL中,您使用0和1来设置位字段(就像SQL中的是/否字段一样) 访问权限)。在Management Studio中,它显示为假/真值(在 至少在最新版本中) 所有这些似乎都表明Management Studio将位显示为假/真值,即选择强制转

更新:

似乎没有人不理解我的问题

这位人士表示,在这方面,我的看法是:

我在SQLServer2000中有一个带有BitValue列的表。但是,确实如此 在SQL Server Management Studio中显示为真/假

一位用户表示,在这方面

在SQL中,您使用0和1来设置位字段(就像SQL中的是/否字段一样) 访问权限)。在Management Studio中,它显示为假/真值(在 至少在最新版本中)

所有这些似乎都表明Management Studio将位显示为假/真值,即
选择强制转换(1为位)
将显示为真。

但这并没有发生在我身上

有人知道为什么吗


您必须使用CASE表达式

select cast('false' as bit) --> this return 0
SELECT 
       CASE WHEN (value = 1) THEN 'true'
       ELSE 'false'
       END
但是你可以在表达式

select cast('false' as bit) --> this return 0
SELECT 
       CASE WHEN (value = 1) THEN 'true'
       ELSE 'false'
       END
“值”将是您的“位”字段


希望这有帮助

位可以表示是/否、真/假、开/关、IsSomething等。SSMS不知道位值背后的业务含义,因此它显示NULL、0或1。

这是您负责的显示逻辑。该值存储为
0
1
,显示方式取决于您的查询。您可以使用
CASE
,但也可以使用
IIF

SELECT IIF(YourField = 1, 'True', 'False') AS MyBoolean
FROM YourTable
如果要返回
true
/
false
,实际上是在查询中返回字符串/varchar。如果这是针对应用程序的,我建议在表示层进行转换,尽可能晚地在调用堆栈中进行转换,而不是在查询中进行转换。

然后您可以使用case返回您想要的内容

CASE WHEN <column> = 1 THEN 'TRUE' ELSE 'FALSE' END AS <alias>

CASE WHEN=1,则'TRUE'或'FALSE'结束为

这是可视化查询设计器结果窗格的一项功能

不是一般的SSMS结果网格

例如,在使用UI创建视图或选择表上的“编辑前200行”快捷菜单选项时,会遇到查询设计器


相反,你必须使用案例表达法……每个发布回复的人都完全按照你的要求回答了你的问题。看来你的问题完全是另一回事。您的实际问题是什么?您的“当前”问题仍然是“为什么sql server没有显示一点真/假”,并且这里发布的每个答案都针对这个确切的问题。否。正如丹·古兹曼在下面非常清楚地解释的那样,这不是真的,也不是假的。它不是两值数据类型。它可以是1、0或NULL。你如何对待这些价值观完全取决于你自己。很简单,一个位只能包含这些值中的任何一个。通常,1表示True,0表示False,但sql server没有布尔数据类型。我隐约记得,2005年,他们试图对SSMS进行处理,并显示了字符串True/False。但这只是在应用程序中,实际值仍然是1和0。然后,在第一次更新中,他们让这种情况消失了。而SQL2000One在今天已经完全不相关了,DBMS从那时起已经有了很大的发展。2000年甚至还没有SSM,它仍然是查询分析器。我澄清了我的问题。你能再读一遍吗?我不是问这个,我澄清了我的问题。你能再读一遍吗?我不是问这个。