如何将0保存为SQL中的第一个数字

时间:2012-06-03 06:22:19

标签: sql-server

我有一个只存储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作为数据类型

3 个答案:

答案 0 :(得分:4)

这是一个数据类型问题:如果您使用int,则会存储数值,因此001234将存储为数字1234.

您可以稍后重新创建零填充,但它不是存储数据的一部分:0001234012341234整数相同}。

  • 如果要将所有数字左键填充到一定长度,请在检索后使用String.Format()
  • 如果00012341234的值不同,请使用类似字符串的数据类型

答案 1 :(得分:1)

你做不到。问题不在于检索,而是数据作为整数存储在int列中,而不是字符串格式化。

如果您希望数据库在int之前存储数字0,则使用其他数据类型,可以是字符串,其中一个是零的数量,也可以是更适合您精确需求的其他格式。

编辑:如果您的零没有意义(它们只是为了补充),请将您的格式保存为int,并在开头添加尽可能多的“0”。

答案 2 :(得分:-2)

在询问并回顾其他答案之后,我想起了高中的一个课程,其中说明int存储了235个字符,但实际上它存储了234个字符,所以我总是想知道最后一个字母可能没有存储,但现在在实际很明显,它不存储第一个字母0 lol,我将数据类型更改为nvarchar(50),它存储检索两个字符,无论多少;)