SQL Management Studio是否会在没有手动转换的情况下自动将位显示为true / false?

时间:2017-08-01 17:24:34

标签: sql-server

更新

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

Return Bit Value as 1/0 and NOT True/False in SQL Server,该人说

  

我在SQL Server 2000中有一个带有BitValue列的表。但它是   在SQL Server Management Studio中显示为True / False。

How do you create a yes/no boolean field in SQL server?中,用户说

  

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

所有这些似乎表明Management Studio将位显示为false / true值,即 $searchModel = new CustomersSearch(); $dataProvider = $searchModel->search(Yii::$app->request->queryParams); $dataProvider->query->where('customers.status = 10'); 将显示为true。

但这不会发生在我身上。

有谁知道为什么?

select cast(1 as bit) returns 1, not true

5 个答案:

答案 0 :(得分:4)

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

不是一般的SSMS结果网格。

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

enter image description here

答案 1 :(得分:2)

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

答案 2 :(得分:2)

https://docs.microsoft.com/en-us/sql/t-sql/data-types/bit-transact-sql

然后你可以用case来返回你想要的东西

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

https://docs.microsoft.com/en-us/sql/t-sql/language-elements/case-transact-sql

答案 3 :(得分:1)

您必须使用CASE表达式...

select cast('false' as bit) --> this return 0

但你可以使用CASE WHEN表达式......

SELECT 
       CASE WHEN (value = 1) THEN 'true'
       ELSE 'false'
       END

&#34;值&#34;将是你的&#34; bit&#34;字段。

希望这有帮助!

答案 4 :(得分:1)

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

SELECT IIF(YourField = 1, 'True', 'False') AS MyBoolean
FROM YourTable

如果要返回true / false,实际上是在查询中返回字符串/ varchar。 如果这是针对应用程序的,我建议在表示层中进行转换,尽可能在调用堆栈中进行转换,而不是在查询中。