1

私は6桁の数字だけを格納するテーブルを持っており、最初の文字として複数の0を含む数字がある場合でも、最初の文字として0を含む数字があります。

          using (TransactionScope scope = new TransactionScope())
            {

                using (SqlConnection conn = new SqlConnection(constr))
                {
                    conn.Open();
                    using (SqlCommand cmd = new SqlCommand(query, conn))
                    {
                        cmd.Parameters.Add(new SqlParameter("@numType", numTyp));
                        cmd.Parameters.Add(new SqlParameter("@numFrom", textBox1.Text));
                        cmd.Parameters.Add(new SqlParameter("@numTo", textBox2.Text));
                        cmd.ExecuteNonQuery();
                    }
                    conn.Close();
                }

                scope.Complete();

データは保存され、取得もされていますが、最初の数字が0の場合、sqlはそれらを省略します。たとえば、数字001234はdbに1234として保存されます。 ..

Sqlserver 2008 visualstudio 2010 c#を使用する

曖昧ではないことを願って、、よろしくお願いします

編集:データ型としてintを使用しています

4

3 に答える 3

4

これはデータ型の問題です。を使用するintと数値が格納されるため、001234は数値1234として格納されます。

ゼロパディングは後で再作成できますが、保存されたデータの一部ではありません。またはと0001234同じ整数です。012341234

  • すべての数字を一定の長さに左パッドしたい場合はString.Format()、検索後に使用してください。
  • 00012341234が異なる値の場合は、文字列のようなデータ型を使用します
于 2012-06-03T06:29:06.563 に答える
1

できません。問題は取得ではなく、文字列の書式設定なしで、データが単なる整数として int 列に格納されることです。

データベースに int の前に 0 の数を格納する場合は、別のデータ型を使用します。文字列、2 つの int の 1 つがゼロの数、または正確なニーズにより適した別の形式のいずれかです。

編集: ゼロが意味をなさない場合 (補完するためだけに)、フォーマットを int のままにして、最初に必要なだけ「0」を追加します。

于 2012-06-03T06:26:03.643 に答える
-2

他の回答を尋ねて確認した後、int は 235 文字を格納するという高校での教訓を思い出しましたが、実際には 234 文字を格納するため、最後の文字が格納されていないのではないかといつも疑問に思っていましたが、実際には最初の文字0が保存されていないことを明確にしてください笑、データ型をnvarchar(50)に変更しました。保存すると、どれだけ0文字でも取得できます;)

于 2012-06-03T07:15:55.537 に答える