惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
人人都是产品经理
人人都是产品经理
Hugging Face - Blog
Hugging Face - Blog
有赞技术团队
有赞技术团队
阮一峰的网络日志
阮一峰的网络日志
罗磊的独立博客
博客园_首页
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
大猫的无限游戏
大猫的无限游戏
博客园 - 司徒正美
S
SegmentFault 最新的问题
Jina AI
Jina AI
美团技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
小众软件
小众软件
WordPress大学
WordPress大学
爱范儿
爱范儿
博客园 - Franky
量子位
V
V2EX
Apple Machine Learning Research
Apple Machine Learning Research
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
雷峰网
雷峰网

博客园 - 一碗豆芽汤(OneV)

C#一些基础知识回顾 2021年立个Flag,回顾十多年来的IT职业之路-----没事瞎BB 使用 Visual Studio 创建 .NET 5 控制台应用程序 log4net将日志进行分类,保存到不同的目录当中 .net 使用PowerShell获取电脑中的UUID .Net MVC中访问PC网页时,自动切换到移动端对应页面 C# 全角符号转半角 微信开发第二篇:工具篇 微信开发第一篇:问题篇 [转载]ODAC (odp.net) 开发到部署 【项目开发】LigerUI+MVC的应用 VS中两个常用辅助工具 第1次做面试官的随谈(二) 第1次做面试官的随谈(一) 转,有用 [转载收录]ASP.NET 2.0加密Web.config - 一碗豆芽汤(OneV) - 博客园 关于重构之Switch的处理【二】 - 一碗豆芽汤(OneV) - 博客园 重构的例子 关于重构之Switch的处理【一】如果是有序的话,如何处理
sqlite中常见的问题总结
一碗豆芽汤(OneV) · 2013-10-23 · via 博客园 - 一碗豆芽汤(OneV)

一、sqlite中不能使用日期进行相减,执行结果无效

  例如:SELECT count(*) as cnt FROM DayBanalces WHERE (date(ofDay)- date('2013-04-26 00:00:00'))=0          ×

      正确:   SELECT count(*) as cnt FROM DayBanalces WHERE (date(ofDay) = date('2013-04-26 00:00:00'))

二、sqlite中 0 与0.0的差别

  首先先在数据库中创建1张表及插入少许数据

 1 Create Table ZeroDemo
 2 (
 3     id  int  identity(1,1),--在Sqlite中这句话的写法应该为:id  INTEGER    PRIMARY KEY AUTOINCREMENT  NOT NULL,
 4     num1 numeric(18,10),
 5     num2 numeric(18,10),    
 6     numType int 
 7 ) 
 8 
 9 
10 INSERT INTO ZeroDemo(num1,num2,numType) values(1,10,1)
11 INSERT INTO ZeroDemo(num1,num2,numType) values(2,20,1)
12 INSERT INTO ZeroDemo(num1,num2,numType) values(3,30,1)
13 INSERT INTO ZeroDemo(num1,num2,numType) values(4,40,1)
14 INSERT INTO ZeroDemo(num1,num2,numType) values(5,50,2)
15 INSERT INTO ZeroDemo(num1,num2,numType) values(1,1.19999,1)

通常SqlServer中我们的写法如下:

1 ---在SqlServer中如果某列的类型与所需要的列不一致,而又要统计合计sum值的时候,写法一般如下:
2 SELECT 
3 
4 SUM(     
5     (CASE  numType   WHEN 1 THEN  num1*num2 ELSE 0 end )
6 )  as demosCoumns
7 
8 FROM ZeroDemo

但是在sqlite中特别是操作Sum函数时候,一定要强制转成REAL类型, CAST(num1 as REAL)* CAST(num2 as REAL) ELSE CAST(0 AS REAL)

1 SELECT 
2 
3 SUM(     
4     (CASE  numType   WHEN 1 THEN  CAST(num1 as REAL)* CAST(num2 as REAL) ELSE CAST(0 AS REAL) end )
5 )  as demosCoumns
6 
7 FROM ZeroDemo

或者   0.0

SUM(     
    (CASE  numType   WHEN 1 THEN  num1*num2 ELSE 0.0 end )
)  as demosCoumns

FROM ZeroDemo

以上sqlite在工具中执行的结果可能是一样的,但是如是你用.net调用System.Data.SQLite.dll的时候,如果你依然使用sqlserver的写法,那么可能出来的结果小数位数就会不见。具体的原因参见如下的文章:

http://lvyaojia.sinaapp.com/2012/08/sqlite%E5%AD%A6%E4%B9%A0%E6%89%8B%E5%86%8C%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B-%E8%BD%AC/