2011-10-04 81 views
-1

我理解类型关联的概念,并阅读了“SQLite版本3中的数据类型”。我不明白的是,在CREATE语句中声明为NUM(尝试float,double等)并相互相乘的两个字段将如何生成类型为NULL的结果。有多种方法可以强制CAST或强制或贿赂SQLite,以便在多重声明两个声明的NUM时产生NUM,即:NUM * NUM = NUM​​?SQLite操作结果类型

例如:

CREATE TABLE A (id varchar(3) primary key not null, x real not null, y real not null) 
CREATE TABLE B AS SELECT x * y as z from A. 

相应的语句是

CREATE TABLE B(
    id TEXT, 
    x REAL, 
    y REAL, 
    z, 

什么办法可以让旁边,上面的Z A REAL?

+0

好,许多产品的一个'null'为空... – 2011-10-04 19:02:46

+0

需要明确的是,有数据用于x和y,这两个字段的非空数字值。 B中有x,y和z的值:x和y都是REAL,但z的类型是NULL。然而z不包含数值。 – auduf

+0

@auduf允许我欢迎您来到StackOverflow,并提醒我们通常在这里做的三件事:1)当您获得帮助时,尝试给它提供**在您的专业领域回答问题** 2)['阅读常见问题解答' ](http://tinyurl.com/2vycnvr)3)当你看到好的问答时,用['灰色三角形](http://i.imgur.com/kygEP.png)系统的可信度基于用户通过分享知识获得的声誉。另外请记住接受更好地解决您的问题的答案,如果有的话,['通过按复选标记符号](http://tinyurl.com/4srwe2t) –

回答

1

你需要把结果:

CREATE TABLE B AS SELECT CAST(x * y AS REAL) as z from A. 
+0

谢谢,非常感谢。上面的cast的使用确实出现在3.2“比较操作数的相关性”中。现在我已经掌握了上下文。谢谢ldan。 – auduf