2009-08-02 2 views
2

У меня есть несколько тысяч строк, в которых есть 3-значное число, начиная с 100 и варьируясь до 199, которое мне нужно префикс 0. Есть также тысячи других чисел 4 цифры числа, которые я не хочу менять.MySQL append, prefix ряд чисел с 0

Мне нужно найти все 3-значные числа в диапазоне и префикс только для тех, которые находятся в диапазоне от 100 -199 с 0, так как они составляют 4 цифры, например, 100> 0100, 104> 0104 и так далее. Также эти цифры могут шагнуть, например, 110 следующий - 124.

Есть ли способ, которым я могу это сделать с помощью SQL? так как я не хочу менять их вручную!

Большое спасибо

+0

У вас есть скриптовый язык, который вы используете? –

+0

Я использую PHP5 и использую MySQL Front. – gus

+0

Убедитесь, что поле является CHAR, так как добавление нуля слева от номера и сохранение его в db приведет к его удалению (цифры не начинаются с нуля) –

ответ

6

Это лучше всего сделать с использованием языка программирования. Тем не менее, вот SQL запрос, который будет обновлять все существующие номера:

UPDATE tableName SET fieldName = right(concat('0000',fieldName), 4) WHERE length(fieldName) < 4 
+0

Спасибо cpharmston, you подумал бы, глядя на то, что он просто заменит все <4 на 0000. Но он не сохраняет оригинальный номер и отлично работает, вы спасли меня много времени. Приветствия. – gus

6

LPAD функция то, что вы ищете. Вы можете использовать это в своем запросе для ввода чисел на лету.

SELECT LPAD(CONVERT(num AS CHAR), 4, '0') FROM tbl WHERE num > 99 AND num < 200 

Если вы предпочитаете делать это на стороне сценария, str_pad будет делать то же самое в PHP.

+0

Спасибо Dane the Sane. Я также пытаюсь это сделать, но, похоже, все работает нормально. – gus

+0

Спасибо. Работает. –

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