CBool函数在Access SQL语句中返回整数

本文关键字:返回 整数 语句 SQL 函数 Access CBool | 更新日期: 2023-09-27 17:58:14

我使用C#ExecuteReader方法从Access数据库读取数据。我在Access表中有一个字符串字段,在我的查询中,我使用以下代码将其转换为bool:

IIF(IsXYZ = 'True',CBool(1=1),CBool(1=0)) AS IsXYZ

上面的语句是在数据读取器中向我返回Int16值。根据

https://support.office.com/en-us/article/Type-Conversion-Functions-8ebb0e94-2d43-4975-bb13-87ac8d1a2202

它应该返回bool,我在这里缺少什么?

CBool函数在Access SQL语句中返回整数

我在这里错过了什么?

我不认为你错过了什么。我使用System.Data.OleDbSystem.Data.Odbc重新创建了您的问题,并在Access中使用DAO.Recordset重新创建了问题。CBool似乎会在VBA语句中返回Boolean,但在Access SQL语句中会返回Integer

也许可以试试这个。

CBool(IIf(IsXYZ = 'True',-1,0)) AS IsXYZ

值得一提的是,Access中的"是/否"(True/False)字段在SQL Server中被转换为位字段(如果已转换),并且将转换为-1/0表示True/False。BTW 0总是False,并且任何"非零"数字都被认为是True,所以9087也是True!