2012-06-09 2 views
0

Я пытался вставить значение в столбец SQL Server, который имеет тип numeric(18, 0).Вставить ноль перед числовым типом данных в SQL Server

Я не могу вставить нуль в начале. Например, добавление 022223 вставляется как 22223 ...

Я думаю, что изменение типа столбца на varchar будет работать, но я не хочу изменять структуру таблицы.

Любой способ сделать это без изменения таблицы structure..Please помощи

+1

Каков тип данных столбца? –

+0

@BehnamEsmaili its numeric (18, 0) – Karthik

+2

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

ответ

1

Там нет смысла иметь это в базе данных. Вы, после всего, выберете данные, не так ли? Поэтому при выборе сделать что-то вроде this. Я заглянул в google для «mssql numeeric ведущих нулей». Все решения похожи на ссылку, о которой я упомянул :) Или, очевидно, используйте varchar, если у вас по какой-то причине должны быть такие данные в таблице :)

+0

на самом деле все переменные не имеют перед ними нуля, поэтому я не могу добавить значения до них. Может быть, я должен изменить время столбца базы данных на varchar. – Karthik

+3

@karthi: do ** NOT ** изменить тип данных только для целей показа! Если значение, которое вы храните, действительно число, вы должны использовать числовой тип данных! Сохраняемые данные не следует изменять только для некоторого дисплея «косметический» - вы всегда можете изменить отображение в отчетах или пользовательский интерфейс вашего приложения. Сделайте ** НЕ ** выберите «неправильный» тип данных, чтобы справиться с некоторыми требованиями к отображению! Вы пожалеете об этом - скорее, чем позже ..... –

0

Ну, я не думаю, что это возможно, так как это хранится как 32 бит, поэтому просто добавляйте ведущие нули при печати ... Существует несколько подходов. http://sqlusa.com/bestpractices2005/padleadingzeros/

1

вы можете применить преобразование при чтении и вставки значения, как это:

при установке значения:

string s = "00056"; 
double val = double.Parse("0." + s); 

и при запросе использовать значение:

double value = 0.00056; // stored value in your db field 
s = val.ToString().Remove(0,2); 

я думаю, он будет работать в любом случае - есть ли у вас ноль в вашей ценности или нет.

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