首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >零填充:使用纯sql将MD-1转换为MD-001。

零填充:使用纯sql将MD-1转换为MD-001。
EN

Stack Overflow用户
提问于 2014-05-19 10:11:44
回答 4查看 106关注 0票数 0

伙计们我需要帮助。

我正在使用Mysql / phpmyadim。

我有数据库with表,它存储人的名称和代码id。

代码语言:javascript
复制
+--------+---------+
| Name   | code_id |
+--------+---------+
| Nazeer | MD-1    |
+--------+---------+

我有10个联系人和身份证。我使用php程序来生成自动代码。

最近,我从excel文件中将更多的记录导入到数据库中,并将记录增加到5000+中。

我的php自动代码停止生成代码,在代码id上出现语法错误。

我发现我的excel导入有像MD-1、MD-2等代码id,我的程序使用了3位数字的自动代码,因为我的记录超过了数千,这4位会产生语法错误。

我做了一些关于解决这个问题的研究,答案是改变所有的2位数,例如。"MD-1“~ "MD-99”到"MD-001“~ "MD-099”,我的程序将再次工作。

因此,问题是如何在phpmyadmin sql中对其进行更改。我需要保留'MD-‘,并添加'0’,然后再添加相应的数字。

谢谢并感谢您的提前帮助。

雷格尔斯。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-05-19 10:48:27

这个sql将更新您的所有数据,但是正如我在注释中所说的,最好是修复您的php代码。

警告:此sql仅在假设所有数据为MD-xxx格式且其中包含3个或更少数字的情况下才能工作。

代码语言:javascript
复制
UPDATE your_table SET 
    code_id=case length(substr(code_id,4)) 
        WHEN 1 THEN concat("MD-00",substr(code_id,4)) 
        WHEN 2 THEN concat("MD-0",substr(code_id,4)) 
        ELSE code_id END;
票数 0
EN

Stack Overflow用户

发布于 2014-05-19 10:29:50

我假设您希望将内容MD-1更新为MD-001,将MD-99更新为MD-099。要做到这一点,您可以编写一个PHP代码来逐一检索行,并且必须匹配模式,然后进行更新。这里有一些有用的链接。链接1提示:您可以检查5位字符串,然后在3的位置添加另一个0。(使用利用链接1按"-“拆分,然后与"-0”2连接)没有办法仅通过使用MYSQl进行相同的操作,因为它不是一种编程语言。另一件事是PHP不是一个程序。这是一种编程语言。

票数 0
EN

Stack Overflow用户

发布于 2014-05-19 10:37:43

运行UPDATE查询并使用CONCAT函数:

代码语言:javascript
复制
 for ($x=0; $x=<upto>; $x++){
    UPDATE <table_name>
    SET <columnname>= CONCAT('MD-',0,$x) 
    WHERE <columnname>= CONCAT('MD-',$x)
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23735057

复制
相关文章

相似问题

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