在服务器端用零填充数据

Pad data with zeros on the server-side

我正在使用 jQuery 数据表。我让这段代码正常工作:

$res = $this->connection->prepare("....");

$res->bindParam(1,$id);
$res->execute();
$result = $res->fetchAll(PDO::FETCH_ASSOC);

$data = array(
   'data'=>$result
);

return json_encode($data);

这就是结果的样子。

{"data":[{"id":"10","time_in":"2015-07-06 07:30:00","time_out":"2015-07-06 10:26:11" ,"attended":"yes"},{"id":"9","time_in":"2015-07-06 08:00:00","time_out":"2015-07-06 11:46:36","attended":"yes"}]}

但我希望我的 id 被零填充,如下所示。

{"data":[{"id":"00010","time_in":"2015-07-06 07:30:00","time_out":"2015-07-06 10:26:11" ,"attended":"yes"},{"id":"00009","time_in":"2015-07-06 08:00:00","time_out":"2015-07-06 11:46:36","attended":"yes"}]}

我怎样才能做到这一点 这样我就可以像这样输出结果,并且可以在数据中显示它 table?

试试这个 SQL 语句,它将解决您的问题:

SELECT REPLICATE('0',5-LEN(RTRIM(Id))) + RTRIM(Id) .......

我更喜欢干净的 SQL 方法,但是你有 PHP 标签;所以我无法抗拒。

$res = $this->connection->prepare("....");

$res->bindParam(1, $id);
$res->execute();
$result = $res->fetchAll(PDO::FETCH_ASSOC);

foreach ($result as $row):
    $row['id'] = sprintf('%05d', $row['id']);
endforeach;

$data = array(
    'data' => $result
);

return json_encode($data);

MySQL

在 MySQL 中你可以使用 LPAD().

例如,要用零填充字段 id 到 5 个字符,请使用以下语句。

SELECT LPAD(id,5,'0') AS id FROM table;

PostgreSQL

在 PostgreSQL 中您可以使用 LPAD()。如果 id 是整数,则需要将其类型转换为字符串。

例如,要用零填充字段 id 到 5 个字符,请使用以下语句。

SELECT LPAD(id::text,5,'0') AS id FROM table;