【发布时间】:2011-02-21 03:41:01
【问题描述】:
我编写了一个脚本,将数据从 csv 文件上传到 mysql 数据库中的列 pin_code。 pin_code 设置为 varchar 并且在插入数据库时,任何值之前的数字 0 都没有进入数据库。
例如 012345,输入为 12345。pin_code strlen 为 6 位。如果 strlen 为 5,是否有任何 mysql 语句可以更改此类列,在其前面添加 0?该数据库现已上线。感谢任何帮助。
【问题讨论】:
我编写了一个脚本,将数据从 csv 文件上传到 mysql 数据库中的列 pin_code。 pin_code 设置为 varchar 并且在插入数据库时,任何值之前的数字 0 都没有进入数据库。
例如 012345,输入为 12345。pin_code strlen 为 6 位。如果 strlen 为 5,是否有任何 mysql 语句可以更改此类列,在其前面添加 0?该数据库现已上线。感谢任何帮助。
【问题讨论】:
【讨论】:
0 才会被剥离,例如,$number = $number + 5;
另一个 MySQL 解决方案:对可变长度字符串使用 LPAD:
mysql> SELECT LPAD('123', 6, '0');
+---------------------+
| LPAD('123', 6, '0') |
+---------------------+
| 000123 |
+---------------------+
1 row in set (0.00 sec)
mysql> select LPAD('12345', 6, '0');
+-----------------------+
| LPAD('12345', 6, '0') |
+-----------------------+
| 012345 |
+-----------------------+
1 row in set (0.00 sec)
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_lpad
【讨论】:
类似
UPDATE table_name SET pin_code=CONCAT('0',pin_code) WHERE LENGTH(pin_code)=5
【讨论】:
当您将数字读入 PHP 时,您的 PHP 脚本很可能会去掉前面的 0。这是一种标准的(和皇家的)痛苦。至少据我所知,您实际上无法阻止 PHP 将仅包含数字的字符串解释为数字并去除不重要的数字。
您建议检查strlen 并将其填充出来肯定是最快的解决方法。
【讨论】: