Как случайное нулевое ведущее строковое поле mysql

Я не уверен, правильно ли вы поняли мой вопрос. Поэтому я могу немного объяснить. У меня есть таблица клиентов, необходимая для тестирования с различным номером (независимо от того, действительно ли это). Итак, это сценарий:

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» после случайного.

Как @ B-and-P описывает в своем комментарии. Вы можете сделать это, используя LPAD .

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

LPAD использует 3 параметра; строка, общее количество символов и последний, но не менее того, какой символ следует использовать для заполнения.

В качестве альтернативы ответу @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;