我有许多产品的备注栏,其中包含以下内容(以及其他信息):
<p><em><strong>Item dropped from ESP datafeed and pricing removed from site on 02-17-2017. May still be available.</strong></em></p>
02-17-2017约会我的更改(但始终采用该格式)。我是否可以仅使用数据库查询来查找和删除这些字符串(保留列中的其余数据,如MySQL REPLACE(),但使用正则表达式来匹配日期)或者我是否需要在PHP中执行此操作? / p>
答案 0 :(得分:1)
WHERE notes LIKE '<p><em><strong>Item dropped from ESP datafeed and pricing removed from site on %. May still be available.</strong></em></p>'
请注意,我在字符串中添加了%
。
我不明白“删除那些字符串” - 你想用空字符串替换它们吗? NULL
?删除包含notes
列中行的行?别的什么?我希望WHERE
条款足以让你朝着正确的方向前进。
注意:REGEXP
是'过度杀伤'; LIKE
就足够了。
如果你想删除日期但保留其余的字符串,那么这不会吗?...
UPDATE tbl
SET notes = '<p><em><strong>Item dropped from ESP datafeed and pricing removed from site on xxxxxxxxxxx. May still be available.</strong></em></p>'
WHERE notes LIKE '<p><em><strong>Item dropped from ESP datafeed and pricing removed from site on %. May still be available.</strong></em></p>';
(或者你想把它作为占位符。)
MariaDB-10.0.5包含:REGEXP_REPLACE(),REGEXP_INSTR()和REGEXP_SUBSTR();但我不认为它们对你的情况是必要的。
答案 1 :(得分:0)
我能够做到:
UPDATE `ii_Product`
SET `notes`= REGEXP_REPLACE(`notes`, '\n?<p><em><strong>Item dropped from ESP datafeed and pricing removed from site on .*\. May still be available.<\/strong><\/em><\/p>\n?\n?', '')