加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在SQLite中的where子句中使用布尔字段?

发布时间:2020-12-12 19:14:03 所属栏目:百科 来源:网络整理
导读:这似乎是一个愚蠢的问题,但是。这可能是我的IDE让我失望了这是代码(这是从DbLinq生成的): SELECT pics$.Caption,pics$.Id,pics$.Path,pics$.Public,pics$.Active,portpics$.PortfolioIDFROM main.Pictures pics$inner join main.PortfolioPictures portpic
这似乎是一个愚蠢的问题,但是。这可能是我的IDE让我失望了这是代码(这是从DbLinq生成的):
SELECT  pics$.Caption,pics$.Id,pics$.Path,pics$.Public,pics$.Active,portpics$.PortfolioID
FROM main.Pictures pics$
inner join main.PortfolioPictures portpics$    on  pics$.Id = portpics$.PictureId

WHERE   portpics$.PortfolioId = 1 AND pics$.Id > 0
--AND pics$.Active = 1 AND pics$.Public = 1
ORDER BY pics$.Id

如果我运行这个查询,我得到三行返回,两个布尔字段称为Active和Public。在注释行中添加不返回任何行。将行更改为以下任一项:

pics$.Active = 'TRUE'
pics$.Active = 't' 
pics$.Active =  boolean(1)

它不工作错误或无结果。我已经google了,发现在那里缺少实际的SQL查询。在这里我们是。

那么,我如何在SQLite的where子句中使用一个布尔字段?

IDE是SQLite Administrator。

更新:嗯,我找到了答案。 SQLite Administrator会让你自己组成自己的类型;生成的创建SQL如下所示:

CREATE TABLE [Pictures] ([Id] INTEGER  PRIMARY KEY AUTOINCREMENT NOT NULL,[Path] VARCHAR(50)  UNIQUE NOT NULL,[Caption] varchAR(50)  NULL,[Public] BOOLEAN DEFAULT '0' NOT NULL,[Active] BOOLEAN DEFAULT '1' NOT NULL)

查询的修复是

AND pics$.Active = 'Y' AND pics$.Public = 'Y'

这里的真正问题是,正如第一个回答者指出的那样,SQLite中没有布尔类型。不是一个问题,而是需要注意的事情。我使用DbLinq生成我的数据层;也许它不应该允许映射SQLite不支持的类型。或者它应该将不是本机的所有类型映射到字符串类型。

SQLite没有布尔类型: What datatypes does SQLite support?

注释行应该可以工作,只需在数据中使用1和0的整数值来表示一个布尔值。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读