2016-11-19 9 views
0

でのINSERT CASEを行うとき、私は2つのテーブルを持って、1は、INSERTのCASE文が「データ型の不一致」sqlite3の

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

エラーで「データ型の不一致」であるデータ

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

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

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

が移入されます私のDBブラウザがsqlfiddleで動作するようです...少なくともエラーはありません

何か助けに感謝します!ありがとう!

+0

両方のツールで 'SELECT sqlite_version(); 'の出力は何ですか? –

+0

私のコンピュータ上のDBブラウザは3.11.0です sqlfiddleは3.8.5です –

+1

私のための3.16.0で動作します。あなたはそのDBブラウザツールを更新できますか? –

答えて

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;