首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取最后的数据并生成字母数字员工号。

读取最后的数据并生成字母数字员工号。
EN

Stack Overflow用户
提问于 2020-11-19 13:02:47
回答 2查看 32关注 0票数 0

我的数据库、员工号和数据中有一列是ACZ2020000。添加员工时,生成的员工编号为ACZ2020002。如何生成ACZ2020001?帮帮我求你了。非常感谢,伙计们。

我就是这样做的:

代码语言:javascript
复制
public function generate_employee_id() {
    $query = $this->db->query("SELECT COUNT(*) AS num_rows FROM tbl_accounts");
    $row = $query->fetch_object();
    $number = $row->num_rows;
    ++$number;
       
    $len = strlen($number);
    for($i = $len; $i < 3; ++$i) {
        $number = '0' . $number;
    }

    $employee_number = 'ACZ'. date("Y") . $number;

    echo json_encode(['employee_number' => $employee_number]);
} 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-19 13:27:30

您想要最高的数目,这与行数没有任何关系。如果我理解这些规则,您可以这样做以获得已经使用的数字:

代码语言:javascript
复制
SELECT employee_id, CAST(SUBSTR(employee_id, 5) AS signed) -- MySQL flavour
FROM tbl_accounts
WHERE employee_id LIKE 'ACZ20%'

..。和好的老MAX()抓住最新的:

代码语言:javascript
复制
SELECT MAX(CAST(SUBSTR(employee_id, 5) AS SIGNED)) + 1 AS next
FROM tbl_accounts
WHERE employee_id LIKE 'ACZ20%'

说,当心并发访问可能引起的问题!

票数 2
EN

Stack Overflow用户

发布于 2020-11-19 13:07:14

也许这里最好的答案是建议不要尝试管理PHP应用程序中的员工编号序列。相反,让您的数据库通过自动增量列或类似的方式进行繁重的提升。请注意,如果所有员工编号都以ACZ开头,那么您实际上只需要一种生成序列的方法,这是数据库相当擅长的事情。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64912253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档