更新MySQL列中的所有值以遵循模式

时间:2014-07-07 16:29:27

标签: php mysql

我在MySQL数据库的表中有一列,用于存储以逗号分隔的数字。这是一个例子:

,,322,,,,455,,,,698,,,,722,

有一个特定的模式:

  • 第一个号码前面总是有两个逗号
  • 第一个和最后一个之间的数字用4个逗号分隔
  • 最后一个数字后跟一个逗号
  • 数字总是以逗号分隔

我在维护这种模式时遇到一些困难..有时候这个字段更新不正确导致某些地方出现太多或太少的逗号:

,,166,,,,845,,,,,,,,846,

我使用这个PHP添加/删除逗号:

public function serializeArray($array) {
    $string = ',';
    foreach ($array as $obj) {
        $string .= ',' . $obj . ',';
    }
return $string;
}

public function unserializeArray($string) {
    $array = explode(",,",$string);
    unset($array[0]);
    $array = array_values($array);

    return $array;

    echo "Array: " . print_r($array);

}

SQL更新列:

$query = $this->pdo->prepare(
    'UPDATE `' . $this->table . '` SET 
        `team_ids` = :team_ids
    WHERE `id` = :customer_id LIMIT 1;');

$query->bindParam(':customer_id', $customer_id, PDO::PARAM_INT);
$query->bindParam(':team_ids', $team_ids);
$query->execute();

我可以使用哪些SQL来更新列中的所有值以遵循上面提到的特定模式要求?

1 个答案:

答案 0 :(得分:1)

这里的问题看起来像你错过了一个数字,而不是它没有遵循你的模式。

,,166,,,,845,,,,Missing No,,,,846,

您确定要删除吗?我会专注于捕获空值或空白数字。

如果是这样,看起来你应该可以进行替换

Update   TableName
Set      NumberPattern = Replace(NumberPattern, ',,,,,,,,', ',,,,') --Repalce 8 ',' with 4 ','