SQLite能否实现指定文本提取与跨列插入操作?
解决SQLite中提取文本并更新到另一列的问题
问题原因
你之前的UPDATE语句执行失败,核心原因是SQLite的UPDATE语法里,无法直接引用SELECT子句中定义的subtitle别名,必须把提取文本的逻辑直接嵌入到更新语句里,或者通过子查询获取目标值。
解决方案1:直接内嵌提取逻辑
把你用来提取subtitle的SUBSTR+INSTR逻辑直接放到REPLACE函数的参数位置,一步完成提取与更新操作:
UPDATE my_table SET event_details = REPLACE( event_details, '<SubTitle>', SUBSTR( filename, INSTR(filename, 'C\') + 2, INSTR(filename, '] ') - INSTR(filename, ') ') - 2 ) ) WHERE oid = 4040;
解决方案2:使用子查询获取提取值
如果提取逻辑复杂,或想让代码更清晰,可通过子查询单独获取subtitle的值,再代入UPDATE语句:
UPDATE my_table SET event_details = REPLACE(event_details, '<SubTitle>', ( SELECT SUBSTR( filename, INSTR(filename, 'C\') + 2, INSTR(filename, '] ') - INSTR(filename, ') ') - 2 ) FROM my_table WHERE oid = 4040 )) WHERE oid = 4040;
验证建议
执行UPDATE前,先用你原有的SELECT语句确认提取的subtitle值是否正确,避免更新错误数据:
SELECT filename, SUBSTR(filename, INSTR(filename, 'C\')+2, INSTR(filename, '] ') - INSTR(filename, ') ')-2) AS subtitle FROM my_table where oid = 4040;
内容的提问来源于stack exchange,提问作者jrockow
相关产品推荐
相关产品推荐

