更新
似乎没有人理解我的问题。
在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。
但这不会发生在我身上。
有谁知道为什么?
答案 0 :(得分:4)
答案 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)
这是您负责的显示逻辑。该值存储为0
或1
,您显示的方式取决于您/您的查询。您可以使用CASE
,但也可以使用IIF
。
SELECT IIF(YourField = 1, 'True', 'False') AS MyBoolean
FROM YourTable
如果要返回true
/ false
,实际上是在查询中返回字符串/ varchar。 如果这是针对应用程序的,我建议在表示层中进行转换,尽可能在调用堆栈中进行转换,而不是在查询中。