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]);