sqlite中常见的问题总结
?
一、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 demosCoumnsFROM 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/
?
轉載于:https://www.cnblogs.com/wangyong969/p/Sqllite.html
總結
以上是生活随笔為你收集整理的sqlite中常见的问题总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一 ASP.NET Html 表单
- 下一篇: PyCharm 3.0 发布,提供免费开