在SQLite中基于条件拆分iOS备份表列并迁移数据的问题
解决SQLite拆分列并根据条件迁移内容的问题
你的报错原因很明确:text_not_from_me是你要生成的新列,原数据库表中根本不存在这个字段,所以不能在CASE语句的ELSE分支里引用它。
按照你的需求,正确的逻辑应该是:
- 当
is_from_me = 1时,保留text列的内容,text_not_from_me列留空 - 当
is_from_me = 0时,text列留空,text_not_from_me列填充原text的内容
对应的SQL语句如下:
SELECT datetime(message.date / 1000000000 + strftime("%s", "2001-01-01"), "unixepoch", "localtime") AS message_date, -- 当is_from_me=1时保留原text,否则为空 CASE WHEN message.is_from_me = 1 THEN message.text ELSE NULL END AS text, -- 当is_from_me=0时填充原text,否则为空 CASE WHEN message.is_from_me = 0 THEN message.text ELSE NULL END AS text_not_from_me, message.is_from_me, chat.chat_identifier FROM chat INNER JOIN chat_message_join ON chat_message_join.chat_id = chat."ROWID" INNER JOIN message ON chat_message_join.message_id = message."ROWID" ORDER BY message_date ASC;
用你提供的测试数据执行后,会得到你期望的结果:
text text_not_from_me is_from_me ---------- -------------------- -------------- Hi John! 0 Hi Jane. 1 How are you? 0 Not bad. You? 1
内容的提问来源于stack exchange,提问作者Ken
相关产品推荐
相关产品推荐

