如果某行包含搜索值,我想删除搜索值(不是行)。例如,如果我想删除香蕉,它应该只从包含香蕉的行中删除香蕉。
试过了,
DELETE FROM users where eat like '%banana%'
但是,它会删除行。那么我怎样才能只从行中删除搜索值呢?
最佳答案
你可以试试这个 -
UPDATE users SET eat = REPLACE(eat, 'banana', '') where eat like '%banana%';
这将仅替换 eat
列中存在的 banana
。
更新
循环遍历数据并替换这些值。这可能有帮助 -
$check_val = 'banana';
//select those rows first
"select id, eat from users where eat like '%" . $check_val . "%'"
foreach($data as $v) {
$temp= explode(',', $v['eat']);
$temp= array_map(function($t) use($check_val) {
return (strpos($t, $check_val) !== false) ? null : $t;
}, $temp);
$temp = array_filter($temp);
$v['eat']= implode(',', $temp);
"update users set eat= '" . $v['eat'] . "' where eat like '%" . $check_val . "%'"
}
关于php - MySQL - 删除行中的值,而不是删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35264796/