2012-03-14 2 views
1

Я создаю нечто похожее на чтение книги в Интернете. Как мы все знаем, в большинстве книг есть главы. каждая глава имеет номер: 01, 02 и т. д. прямо сейчас, у меня есть несколько глав, имеющих десятичное число, например: 01.5, 02.5 и т. Д. Теперь мой тип данных MySQL - это «smallint» с 4 символами, с атрибутом «unsigned zerofill». Так что прямо сейчас, если я набрал что-то вроде: «1» он будет хранить его как: 0001 Если число имеет десятичное значение или что-то другое, кроме чисел, оно не будет хранить его. , который приводит к моему вопросу, есть ли в любом случае я могу заставить его поддерживать десятичные числа. Кроме того, я не хочу, чтобы он показывал десятичное число, если десятичное значение равно 0.Число с ведущим нулем и необязательным десятичным числом (sql)

Ваша помощь приветствуется.

+1

Как вам удастся управлять, если в некоторых книгах есть главы, такие как 1.5.1 или 1.4.5.3 и т. д. В этих случаях ни один из числовых типов данных не был бы полезен, поскольку они позволяют одна точка. Мое предложение - использовать varchar для вашей колонки –

+0

Я думал об этом. но это позволит пользователю, который добавляет книгу, использовать любой символ (буквы-цифры-другие) в номере главы, чего я не хочу! Кроме того, я хочу, чтобы он имел нулевое лидерство. В дополнение ко всему этому это позволит пользователю добавить главу 01 и главу 1 и главу под названием 0001 и т. Д. – shnisaka

+2

Предполагается хранить данные в базе данных, а не форматирование данных +. –

ответ

4

Вы не должны хранить номер таким образом. Что вы должны сделать, так это сохранить его как decimal и отформатировать его при извлечении из базы данных.

Например, если это схема таблицы,

CREATE TABLE amount (value decimal(5,2)); 

В номере PHP может быть отформатирован как,

$res = mysql_query("select * from amount"); 
while($row = mysql_fetch_assoc($res)){ 
    printf ("%07.2f", $row['value']); 
} 

Этот формат printf функция печати 2.9 в 0002.90

+0

, пожалуйста, объясните подробнее, как вы это делаете в моем случае? приведите мне несколько примеров, если это возможно – shnisaka

+0

Отформатируйте данные на вашем языке переднего конца. Каков ваш передний язык? –

+0

@shnisaka Я обновил свой ответ на примере. –

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