我正在使用Mysql / phpmyadim。
我有一个db表,用于存储人员的姓名和代码ID。
+--------+---------+
| Name | code_id |
+--------+---------+
| Nazeer | MD-1 |
+--------+---------+
我有10个联系人和ID。我正在使用用于生成自动代码的php程序。
最近我从excel文件中将更多记录导入db,并将记录增加到5000 +。
我的php自动代码停止生成代码,导致代码ID出现语法错误。
我发现我的excel导入的代码ID类似于MD-1,MD-2等,而我的程序使用自动代码编号为3位数,因为我的记录超过了数千,其中4位数字给出了语法错误。
我做了一些关于解决问题的研究,答案是改变所有2位数字,例如。 " MD-1" 〜" MD-99" TO" MD-001" 〜" MD-099"我的程序将再次运作。
所以问题是我如何在phpmyadmin sql中更改它。我需要保持' MD - '并添加' 0'然后加上相应的数字。
感谢并提前感谢您的帮助。
Regrds。
答案 0 :(得分:0)
我假设您要将内容MD-1更新为MD-001,将MD-99更新为MD-099。要做到这一点,你可以编写一个PHP代码来逐个检索行,并且必须匹配模式然后更新。这是一些有用的链接。 link 1 提示:您可以检查5位数字符串,然后在3位置添加另一个0。(使用[exploid]拆分" - "然后连接" -0" { {3}})只有使用MYSQl才能做同样的事情,因为它不是编程语言。而其他的东西是PHP不是一个程序。它是一种编程语言。
答案 1 :(得分:0)
运行UPDATE查询并使用CONCAT函数:
for ($x=0; $x=<upto>; $x++){
UPDATE <table_name>
SET <columnname>= CONCAT('MD-',0,$x)
WHERE <columnname>= CONCAT('MD-',$x)
}
答案 2 :(得分:0)
这个sql会更新你的所有数据,但就像我在评论中说的那样,你最好修改你的PHP代码。
警告:此sql仅在假设所有数据的格式为[MD-xxx]且数量为3或更少的情况下才有效
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;
答案 3 :(得分:0)
以下简单的更新命令可以帮助您。
UPDATE mytable
SET code_id=IF(LENGTH(code_id)=4,CONCAT(SUBSTRING_INDEX(code_id,'-',1),'-00',SUBSTRING_INDEX(code_id,'-',-1)),IF(LENGTH(code_id)=5,CONCAT(SUBSTRING_INDEX(code_id,'-',1),'-0',SUBSTRING_INDEX(code_id,'-',-1)),code_id));