我不确定你是否正确理解我的问题。我可以解释一下。我有一个客户表,需要用不同的数字进行测试(无论是否真实)。所以这是脚本:
customer_db
+----+------------+
| ID | NUMBER |
+----+------------+
| 1 | 0812345678 |
+----+------------+
| 2 | 0812345678 |
+----+------------+
| 3 | 0812345678 |
+----+------------+
.
.
.
|100 | 0812345678 |
根据表格。我运行了这个脚本:
UPDATE customer_db SET number = FLOOR(0812345678 + rand()*1000000);
这样做。我希望该字段保持相同的格式,前导'081',其余6位数随机。 但它不是。该表成为:
+----+------------+
| ID | NUMBER |
+----+------------+
| 1 | 812246797 |
+----+------------+
| 2 | 816548798 |
+----+------------+
| 3 | 815787898 |
+----+------------+
.
.
.
|100 | 813454687 |
它是9位而不是10.因为缺少前导'0'。我该怎么办才能在随机后保持领先的'0'。
答案 0 :(得分:3)
就像@ B-and-P在他的评论中描述的那样。您可以使用LPAD
。
UPDATE
customer_db
SET
number = LPAD(FLOOR(number + rand()*1000000),10,0)
LPAD使用3个参数;字符串,字符总数以及最后但并非最不重要的字符应该用于填充。
答案 1 :(得分:1)
作为@Benz答案的替代方案,你可以尝试这个(在我的最后工作):
INSERT INTO Table1 (`NUMBER`)
VALUES
(CONCAT('081',rand()*100000000))
表架构
CREATE TABLE IF NOT EXISTS `table1` (
`ID` int(11) DEFAULT NULL,
`NUMBER` char(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;