2016-11-19 67 views
0

执行INSERT CASE时,我有两个表,一个是用数据填充“数据类型不匹配”中的sqlite3

CREATE TABLE `tableX` (`column1` REAL); 

INSERT INTO tableX VALUES (5); 
INSERT INTO tableX VALUES (-3); 

CREATE TABLE `tableY` 
(`rowid` INTEGER PRIMARY KEY, `column2` REAL); 

的INSERT CASE语句是

INSERT INTO tableY SELECT column1, 
CASE WHEN column1 >=0 THEN 1 ELSE 2 END as column2 FROM tableX; 

错误是“数据类型不匹配”中我的数据库浏览器,但它似乎在sqlfiddle工作...没有错误至少

任何帮助,非常感谢!感谢:D!

+0

SELECT SQLite_version();在这两个工具中的输出是什么? –

+0

我的电脑上的数据库浏览器是3.11.0 sqlfiddle是3.8.5 –

+1

3.16.0适用于我。你可以更新该数据库浏览器工具,无论它是什么? –

回答

1

不是最优雅的解决方案,但它是一个工作。

CREATE TABLE `tableX` (`column1` REAL); 
INSERT INTO tableX VALUES (5); 
INSERT INTO tableX VALUES (-3); 

CREATE TABLE `tableZ` (`column1` REAL, `column3` REAL); 
INSERT INTO tableZ SELECT column1, 
CASE WHEN column1 >=0 THEN 1 ELSE 2 END as column3 FROM tableX; 

CREATE TABLE 'tableY' (`rowid` INTEGER PRIMARY KEY, `column2` REAL) 
INSERT INTO tableY (column2) SELECT column3 FROM tableZ; 

DROP TABLE tableZ;