我使用用于SQLite的数据库浏览器来可视化和更新sqlite文件。
我能够执行区分大小写的查询来更新某些文本,如下所示:
UPDATE itemNotes SET note = REPLACE(note , 'sometext', 'abc');
但是我想匹配替换sometext
的所有大小写组合(例如sometext
,SOMEtext
,SOmeText
...)
我试图这样做:
UPDATE itemNotes SET note = REPLACE(LOWER(note), 'sometext', 'abc');
但这会以小写形式转换字段note
的全部内容,这不是我想要的。
我也尝试了以下查询,但没有成功:
UPDATE itemNotes SET note = REPLACE(note, BINARY 'sometext', 'abc')
UPDATE itemNotes SET note = REPLACE(note, COLLATE Latin1_General_CS_AS'sometext', 'abc')
我正在zotero.sqlite上执行此操作,它是由file创建的(第85行)。 该表是通过该查询创建的
CREATE TABLE itemNotes (
itemID INTEGER PRIMARY KEY,
parentItemID INT,
note TEXT,
title TEXT,
FOREIGN KEY (itemID) REFERENCES items(itemID) ON DELETE CASCADE,
FOREIGN KEY (parentItemID) REFERENCES items(itemID) ON DELETE CASCADE
);
答案 0 :(得分:1)
您需要在LOWER(note)
中搜索子字符串,但要用原始字符串替换它。
我不知道您从何处获得文本,假设您可以检查其长度。
在下面的示例中,我将使用常量。
UPDATE itemNotes
SET
note = SUBSTR(note, 0, INSTR(LOWER(note), 'sometext')) || 'abc' || SUBSTR(note, INSTR(LOWER(note), 'sometext')+sometext_len)
WHERE
INSTR(LOWER(note), 'sometext') >= 0;
!注意:一次只能更换一次。
答案 1 :(得分:0)