Php 从多行字段中删除一行(如果它在MySQL中包含单词)
我在MySQL表中有一个文本字段,填充方式如下:Php 从多行字段中删除一行(如果它在MySQL中包含单词),php,mysql,sql,regex,string,Php,Mysql,Sql,Regex,String,我在MySQL表中有一个文本字段,填充方式如下: ID TEXT 1 horse cat cow 2 zebra 3 pig goat dog 如果文本字段包含单词cat,我需要删除该行。我怎样才能做到这一点呢?这并不像看上去那么容易。有几种可能的情况: 'CAT'可以出现在文本的中间,或者在文本的开始或结尾。它也可能单独出现在文本中 幸运的是,您正在运行MySQL 8.0,因此我们可以使用re
ID TEXT
1 horse
cat
cow
2 zebra
3 pig
goat
dog
如果文本字段包含单词cat,我需要删除该行。我怎样才能做到这一点呢?这并不像看上去那么容易。有几种可能的情况:<代码> 'CAT'可以出现在文本的中间,或者在文本的开始或结尾。它也可能单独出现在文本中 幸运的是,您正在运行MySQL 8.0,因此我们可以使用
regexp\u 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$',
''
)
理想情况下,您可以对其进行规范化,这样一来,您就不会在一列中存储多个值。如果您尝试过任何方法,您能告诉我们吗?这可能会让你更容易理解你到底想做什么。这个问题在目前的状态下是很不清楚的。@GrumpyCrouton嗯,我认为它很简单。我正在使用一种文本字段格式来存储多行。如果我需要从字段中删除某一行,我应该使用什么查询?@Steven你是说“文本字段”是指它在数据库中的存储方式,还是在网页上的显示方式?我不清楚你所说的“从字段中删除某一行”是什么意思,因为我不知道第一个问题的答案。@GrumpyCrouton数据库中的数据就是这样存储的。谢谢!它几乎起作用了。由于某些原因,当字段中只有一行带有
cat
时,它不会更新该字段。也许我可以使用PHP来帮助我完成这项任务?