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

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

概述这似乎是一个愚蠢的问题,但是。这可能是我的IDE让我失望了这是代码(这是从DbLinq生成的): SELECT pics$.Caption, pics$.Id, pics$.Path, pics$.Public, pics$.Active, portpics$.PortfolioIDFROM main.Pictures pics$inner join main.PortfolioPictur 这似乎是一个愚蠢的问题,但是。这可能是我的IDE让我失望了这是代码(这是从Dblinq生成的):
SELECT  pics$.Caption,pics$.ID,pics$.Path,pics$.Public,pics$.Active,portpics$.PortfolioIDFROM main.Pictures pics$inner join main.PortfolioPictures portpics$    on  pics$.ID = portpics$.PictureIDWHERE   portpics$.PortfolioID = 1 AND pics$.ID > 0--AND pics$.Active = 1 AND pics$.Public = 1ORDER 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的整数值来表示一个布尔值。

总结

以上是内存溢出为你收集整理的如何在SQLite中的where子句中使用布尔字段?全部内容,希望文章能够帮你解决如何在SQLite中的where子句中使用布尔字段?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1161557.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存