【问题标题】:sql select doesn't worksql选择不起作用
【发布时间】:2017-09-28 07:26:27
【问题描述】:

我在我的 asp.net 项目中使用 Microsoft Access 2016。 我有一个名为 isAdmin 的是/否字段,我想创建一个显示所有管理员用户的 sql。我试过“select * from table1 where isAdmin='1'.”,但没有用。它给了我一条错误消息:“数据类型不匹配”。我应该在代码中更改什么?

【问题讨论】:

  • isAdmin 列的数据类型是什么?
  • 是/否数据类型

标签: sql asp.net visual-studio-2010 ms-access-2016


【解决方案1】:

MS Access 存储的是与标准 SQL 服务器不同的是/否字段,甚至是 MS SQL Server,其中布尔值为 1 或 0。在 MS Access 中,表示 BIT 数据类型,即布尔值是/否字段通过 -1(真)或 0(假)。负值 -1 具有所有位都设置的位模式。您可以将WHERE 子句编写为

WHERE isAdmin = -1

为了更好地移植到其他 SQL 数据库,你也可以使用

WHERE isAdmis <> 0

后者对于 MS Access 以及 MS SQL Server 或大多数其他 SQL 方言都是正确的。

另见https://support.office.com/en-us/article/Add-a-check-box-control-to-show-Yes-No-values-4FA55FFF-B3A0-4D03-A7A6-A2CFE4D03D4C

【讨论】:

  • 谢谢。或:Where isAdmin = True。不过很有趣。我以前从未见过一个问题的另外五个答案,全错了。
【解决方案2】:

这取决于您的数据类型。如果该列的数据类型是 varchar 则

select * from table1 where isAdmin = 'yes'

如果是int类型则

select * from table1 where isAdmin = 1

【讨论】:

    【解决方案3】:

    看来你应该试试:

    select * from table1 where isAdmin = 1;
    

    【讨论】:

    • 我做了什么,它告诉我“标准例外中的数据类型不匹配”。但是,当我尝试进行更新查询时,也将 isAdmin 设置为 1,它起作用了。所以我没有明白我做错了什么
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多