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
,我在这里缺少什么?
我在这里错过了什么?
我不认为你错过了什么。我使用System.Data.OleDb
、System.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!