[英]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
這應該正確處理所有情況。 假設以下樣本數據:
查詢返回:
旁注:如果需要,您可以將其轉換為update
語句。
update mytable
set text =
regexp_replace(
regexp_replace(text, '(\n|^)cat(\n|$)', '\n'),
'^\n|\n$',
''
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.