You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 15:50:29