【问题标题】:How to random a zero leading string field mysql [duplicate]如何随机零前导字符串字段mysql [重复]
【发布时间】:2014-09-23 14:04:17
【问题描述】:

我不确定您是否正确理解了我的问题。所以我可以解释一下。我有一个客户表,需要用不同的数字进行测试(无论它是否真实)。所以这是脚本:

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”。

【问题讨论】:

标签: php mysql random sql-update


【解决方案1】:

就像@B-and-P 在他的评论中描述的那样。您可以使用LPAD 来执行此操作。

UPDATE 
    customer_db
SET
    number = LPAD(FLOOR(number + rand()*1000000),10,0)

LPAD 使用 3 个参数;字符串,字符总数以及最后但并非最不重要的字符应该用于填充。

【讨论】:

  • 非常感谢。这是我正在寻找的深思熟虑的答案。
【解决方案2】:

作为@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;

【讨论】:

  • 非常感谢 B-and-P。这是一个从桌子开始的好主意。我会记下来以备将来使用。
猜你喜欢
  • 1970-01-01
  • 2012-10-19
  • 2014-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-13
  • 2014-04-12
相关资源
最近更新 更多