如果mysql中包含单词,则从多行字段中删除一行

jw5wzhpr  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(358)

mysql表中有一个文本字段,填充方式如下:

ID     TEXT
1      horse
       cat
       cow

2      zebra

3      pig
       goat
       dog

如果文本字段中包含单词cat,则需要删除该行。我该怎么做?

6jjcrrmo

6jjcrrmo1#

这并不像看上去那么容易。有几种可能的情况: 'cat' 可能出现在正文的中间,或正文的开头,或结尾。它也可能单独出现在文本中。
幸运的是,您运行的是mysql 8.0,因此我们可以使用 regexp_replace() . 我建议两个通行证,像这样:

select id, regexp_replace(
    regexp_replace(text, '(\n|^)cat(\n|$)', '\n'),
    '^\n|\n$', 
    ''
) new_text
from mytable t

这应该妥善处理所有案件。假设以下示例数据:

查询返回:

在db小提琴上演示。
旁注:你可以把这个变成一个 update 如果需要的话。

update mytable 
set text = 
    regexp_replace(
        regexp_replace(text, '(\n|^)cat(\n|$)', '\n'),
        '^\n|\n$', 
        ''
    )

相关问题