繁体   English   中英

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

[英]Sqlite - How to remove substring in a field using wildcards

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

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

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

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

解决办法是什么?

这是一个尝试拼接<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()不区分大小写,并且两个标记看起来都是一样的。

演示

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM