Php 用逗号替换子字符串和不使用逗号替换子字符串

Php 用逗号替换子字符串和不使用逗号替换子字符串,php,mysql,Php,Mysql,cnt是如下所示的文本列: lorem,ipsum,sky,dolor lorem,sky,ipsum lorem,ipsum,dolor,sky 我想从整个列中删除sky $sq = "update table set cnt = replace(cnt, :a, :b)"; $st = $db->prepare($sq); $st->execute([ ":a" => 'sky' &q

cnt
是如下所示的文本列:

lorem,ipsum,sky,dolor
lorem,sky,ipsum
lorem,ipsum,dolor,sky
我想从整个列中删除
sky

$sq = "update table set cnt = replace(cnt, :a, :b)";
    $st = $db->prepare($sq);
    $st->execute([
        ":a" => 'sky'
        ":b" => ''
    ]);
问题
sky
有时会有一个逗号-它也应该被删除
有时没有逗号(在字符串末尾)

如何使用和不使用逗号删除
sky

UPDATE test
SET cnt = TRIM( BOTH ',' 
                FROM REPLACE(REPLACE(CONCAT(',', cnt, ','), 
                                     CONCAT(',', @a, ','), 
                                     CONCAT(',', @b, ',')),
                             ',,',
                             ','));

在cnt字符串上使用将字符串拆分为数组,然后可以搜索要删除的值(例如,使用)。最后,将其重新设置为字符串。可能更简单-一个要替换的查询和第二个用于trim bothYes的查询,至少三个请求。。。至少四个。。。但有什么意义呢?如果输入的值是另一个值的子字符串(替换“xabcd”中的“abc”),则会给出错误的输出。您的猜测不属于我的情况。从问题中可以清楚地看出,这些是csv值。别那么虚荣。这是一个简单得多的解决方案,效果非常好。从问题中可以清楚地看出,这些都是csv值。你保证没有CVS vaue是另一个CSV值的子字符串吗?如果是这样的话,那么为什么在问题中跳过这个事实呢?这是我问题的第一句话:
cnt是这样一个文本列
。所以-
像这样
-意思是-
像这样
$sq = "update table set cnt = replace(cnt, :a, '')";
$st = $db->prepare($sq);
$st->execute([":a" => $a . ',']);
$st->execute([":a" => $a]);