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

SQLite条件替换字符串为含换行内容的查询语句求助

解决SQLite更新语句的问题

我来帮你搞定这个SQLite的更新需求~首先你的原语句没生效,核心问题是UPDATE的语法顺序搞错了,另外还有个细节是CHAR(13)的处理方式不对,我一步步给你拆解:

原语句的问题

你写的UPDATE Slovník WHERE Phrase = 1 SET Note = ...违反了SQL的语法规则,正确的顺序应该是:UPDATE 表名 SET 列=更新值 WHERE 条件,把WHERE子句放在SET后面才对。

正确的解决方案

首先,建议你先执行查询确认要更新的目标行,避免误操作:

SELECT Note FROM "Slovník" 
WHERE Phrase = 1 AND Note LIKE '%); "%';

这条语句会列出所有符合Phrase=1且Note包含'); "的行,你可以先核对这些内容是否是你想要修改的。

然后执行正确的UPDATE语句:

UPDATE "Slovník"
SET Note = REPLACE(Note, '); "', ')' || CHAR(13) || '"')
WHERE Phrase = 1;

关键细节说明

  • 语法顺序修正:把SET子句放在WHERE前面,这是SQL标准的语法要求,之前的顺序会被SQLite判定为语法错误,所以执行失败。
  • CHAR(13)的正确使用:如果你直接写')CHAR(13)"',SQLite会把它当成普通字符串替换,而不是生成回车符。用||拼接CHAR(13)函数的返回值,才能真正把分号替换成回车符(CHAR(13)对应ASCII里的回车字符)。
  • 表名的引号:因为你的表名Slovník包含特殊字符(重音符号),所以要用双引号"Slovník"括起来,避免解析错误。
  • BOOL类型匹配:SQLite里的BOOL类型本质是整数,Phrase=1和Phrase=TRUE效果是一样的,你可以根据习惯选择。

注意事项

执行UPDATE前最好先备份你的数据库,或者用上面的SELECT语句验证目标行,确保不会误修改其他数据。

内容的提问来源于stack exchange,提问作者Josef H.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:37:10