mysql:用正则表达式替换迭代元素

时间:2015-10-12 16:25:40

标签: php mysql

我试图更新一个表格,其中一个名为" operatori"的字段包含一组数字。 这是一个例子。 2,4,4,4,4,4

我打算做的是摆脱集合中相同元素的多次迭代,得到一个更清晰的元素,如:2,4。

我尝试用4替换4,4,4,4,4,但只有当我有5次相同元素的迭代并且只有4号时才有效。

数字从0到7,迭代可以从1到N.

我认为正则表达式可以解决问题,但老实说,理解它们有很多困难。

你有任何提示吗?

2 个答案:

答案 0 :(得分:1)

试试这个,

$str = "2,4,4,4,4,4";
$array = explode(",",$str);
$array = array_unique($array);
print_r($array);

输出

Array
(
    [0] => 2
    [1] => 4
)

答案 1 :(得分:0)

您可能为此目的使用了错误的数据结构。通常,您需要一个每个项目有一行的联结表,而不是将这些项目存储在列表中。

但是,只有8个项目,您可以执行以下操作 - 如果您不关心订购。

select concat_ws(',',
                 (case when find_in_set('0', operatori) > 0 then '0' end),
                 (case when find_in_set('1', operatori) > 0 then '1' end),
                 (case when find_in_set('2', operatori) > 0 then '2' end),
                 (case when find_in_set('3', operatori) > 0 then '3' end),
                 (case when find_in_set('4', operatori) > 0 then '4' end),
                 (case when find_in_set('5', operatori) > 0 then '5' end),
                 (case when find_in_set('6', operatori) > 0 then '6' end),
                 (case when find_in_set('7', operatori) > 0 then '7' end)
                )
. . .

此逻辑也可用于update语句。