Sqlite - 如何使用通配符删除字段中的子字符串

时间:2017-06-20 06:29:49

标签: sql sqlite

我想在表格的所有字段中删除所有出现的某种字符串模式。

例如,查找模式"<XY>*<Xy>"的所有匹配项,其中*表示任何可能的字符配置。我想删除那些子串并保持字符串的其余部分完好无损。

这是我想用作SQL命令的示例,但当然这不起作用:

UPDATE Table SET Field = replace(Field, '<XY>*<Xy>', '');

解决方案是什么?

1 个答案:

答案 0 :(得分:0)

这是一个尝试拼接<XY>...</XY>标签的选项:

UPDATE yourTable
SET Field = SUBSTR(Field, 1, INSTR(Field, '<XY>') - 1) ||
            SUBSTR(Field, INSTR(Field, '</XY>') + 5)
WHERE Field LIKE '%<XY>%</XY>%'

它会更新包含此模式的字段,其中包含第一个<XY>之前的所有内容以及第二个</XY>之后的所有内容的连接。

请注意,我使用的是<XY>...</XY>而不是您原来使用的内容,因为INSTR()不区分大小写,并且两个标记看起来都是一样的。

Demo

该演示适用于MySQL,但sytnax几乎与SQLite相同。