2012-12-12 2 views
1

я получил базу данных MySQL столбец с именем country_id, как:MySQL добавляя ведущие цифры к существующим идентификаторам в колонке

country_id 
---------- 
1 
2 
59 
435 
2714 

То, что я пытаюсь выполнить сейчас, чтобы добавить ведущий нули к каждому ID, так результатом будет:

country_id 
---------- 
0001 
0002 
0059 
0435 
2714 

Каждый идентификатор должен иметь не более 4 цифр. Вот и все.

Есть ли какой-либо оператор SQL, который я мог бы использовать в PHPmyAdmin, чтобы обновить этот столбец country_id описанным выше способом?

С уважением!

+0

SELECT LPAD (country_id, 5, '0') as country_id FROM table; http://stackoverflow.com/a/3200770/453439 – Colton

+0

Не устанавливать данные, объявить столбец 'INTEGER (4) ZEROFILL' – Wrikken

+0

Да да 'LPAD' :-) – bonCodigo

ответ

4

Объявить ZEROFILL на колонке:

mysql> create table foobar (nr integer(4) ZEROFILL); 
Query OK, 0 rows affected (0.31 sec) 

mysql> INSERT INTO foobar VALUES (1),(12),(123),(1234),(12345); 
Query OK, 5 rows affected (0.05 sec) 
Records: 5 Duplicates: 0 Warnings: 0 

mysql> SELECT * FROM foobar; 
| 0001 
| 0012 
|
| 1234 
| 12345 
0
SELECT LPAD(country_id, 4, '0') 
FROM your_table 

Если вы можете изменить вашу структуру БД использовать ZEROFILL

+0

Спасибо за ссылка на ZEROFILL, это помогло мне понять, как объявить в PHPmyAdmin! –

2

Если country_id столбец является символ типа данных (не числовой), то вы можете предварять нули и взять самый правый участок:

UPDATE foo SET country_id = RIGHT(CONCATENATE('0000',country_id),4) 

UPDATE foo SET country_id = LPAD(country_id, 4, '0') 

(ПРИМЕЧАНИЕ. Любой из этих операторов приведет к потере данных, если любое значение country_id длиннее 4 символов ... первый получает самые высокие символы, второй будет содержать четыре крайних левых символа, если country_id превышает четыре символа , Если значение имеет e - символ «-», это приведет к нечетному взгляду, например. '00 -4' . Функция LTRIM доступна для удаления ведущих пробелов.


Если, с другой стороны, country_id является числовым типом данных, то вы не можете добавить ведущие нули.

Для целочисленного типа вы можете указать длину отображения и параметр ZEROFILL, например.

country_id INT(4) ZEROFILL 

Но это до клиентского приложения, чтобы сделать использование модификатора длины и ZEROFILL атрибута сделать указанное форматирование, есть на самом деле не что-то делается «в базе данных» с этими атрибутами. (Клиент командной строки MySQL будет следить за этими настройками и отображать нулевое значение, равное максимум четырем символам, но другие клиенты не обязаны это делать.)

Вы также можете передать это значение символу и поместить его с ведущими «0» символов в запросе:

SELECT LPAD(country_id, 4, '0') AS country_id 

Но обратите внимание, что собирается возвращать тип символов, а не цифровой.

+0

это INT (11) на самом деле –

+0

ZEROFILL сделал трюк! –

Смежные вопросы