一、Sqllite中不能使用日期进行相减,执行结果无效
例如: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'))
二、SqlLite中 0 与0.0的差别
首先先在数据库中创建1张表及插入少许数据
2 (
3 id int identity(1,1),--在Sqllite中这句话的写法应该为: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中我们的写法如下:
2 SELECT
3
4 SUM(
5 (CASE numType WHEN 1 THEN num1*num2 ELSE 0 end )
6 ) as demosCoumns
7
8 FROM ZeroDemo
但是在SqlLite中特别是操作Sum函数时候,一定要强制转成REAL类型, CAST(num1 as REAL)* CAST(num2 as REAL) ELSE CAST(0 AS REAL)
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
(CASE numType WHEN 1 THEN num1*num2 ELSE 0.0 end )
) as demosCoumns
FROM ZeroDemo
以上SqlLite在工具中执行的结果可能是一样的,但是如是你用.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 TDD是1)写测试2)写通过这些测试的代码,3)然后重构的实践.在,NET社区中, 这个概念逐渐变得非常流行,这归功于它所增加的质量保证.此时,它很容易测试public方法,但是一个普遍的问题出现了,”我如何测试Protected和private方法呢?” 本文将: 背后的方法 你是否应该测试private方法? 一个Google查询 向你展示了有很多关于使用private方法的争议,更不用说测试他们了.下面这个表概括了一些关于这个话题的正方和反方的普遍意见. 正方 反方 使用private方法 测试Private方法 在这些主题的两方,都有明了并且具有经验的人.因此我不打算,也不期望终结”我是否应该测试private方法”的争论.但是对于双方来说,这里仍有价值来知道如何测试他们,即使你认为private不应该被测试. 好的原则以及不适当的技术 Andrew Hunt a和 David Thomas在他们的书中Pragmatic Unit Testing in C# with NUnit, 解释到,好的单元测试是ATRIP: 对于测试private/protected方法来说,有另外三个附加原则:
没有评论:
发表评论