从mytable WHERE列中删除,例如'%word%'问题

时间:2019-11-20 12:19:14

标签: mysql

我有一些要从数据库中删除的电子邮件地址。我想通过@符号后的域名删除它们。

我可以这样删除它们吗?:

DELETE FROM mytable WHERE column LIKE '%gmx.com%' OR column LIKE '%web.de%' 
OR column LIKE '%yandex.com%' OR column LIKE '%yahoo.com%'

能行吗?

3 个答案:

答案 0 :(得分:2)

是的,这将起作用。请注意,它将删除行,而不仅仅是列中的值。

答案 1 :(得分:1)

只是一个提示,如果可以选择它们,则可以将其删除:) 我假设“列”包含电子邮件地址,所以对于您的问题,是的,它可以工作,但是请确保您是否只想删除该列中的值或与该值相关的任何内容。

答案 2 :(得分:1)

我不是数据库专家,但它不会删除电子邮件地址,但会删除包含“列”中提到的任何域的整个记录​​。如果您只想删除电子邮件地址,则应执行

UPDATE mytable SET column = '' WHERE column LIKE '%gmx.com%' OR column LIKE '%web.de%' 
OR column LIKE '%yandex.com%' OR column LIKE '%yahoo.com%'

这将仅将电子邮件字段设置为空字符串,并事实上删除了WHERE子句中记录中的电子邮件地址,从而保留了该记录。 顺便说一句,如果您想摆脱@之后的所有内容,我认为您不需要'%yahoo.com%'中的最后一个%,并且我认为省略最后一个%会改善性能。