簡體   English   中英

如果多行字段中包含 MySQL 中的單詞,則從多行字段中刪除一行

[英]Removing a line from a multi-line field if it contains a word in MySQL

我在 MySQL 表中有一個文本字段,填充如下:

ID     TEXT
1      horse
       cat
       cow

2      zebra

3      pig
       goat
       dog

如果它包含單詞cat ,我需要從文本字段中刪除該行。 我怎樣才能做到這一點?

這並不像看起來那么容易。 有幾種可能的情況: '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 Fiddle 上的演示

旁注:如果需要,您可以將其轉換為update語句。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM