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 的数量,请使用另一种数据类型,可以是一个字符串、几个 int,其中一个是零的数量,或者更适合您的精确需求的另一种格式。

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

于 2012-06-03T06:26:03.643 回答
-2

在询问并查看其他答案之后,我想起了高中时的一个教训,它指出 int 存储 235 个字符,但实际上它存储 234 个字符,所以我一直想知道最后一个字母可能不会被存储,但现在实际上它是很明显它不存储第一个字母 0 大声笑,我将数据类型更改为 nvarchar(50) 它存储检索都用 0 个字符,无论多少;)

于 2012-06-03T07:15:55.537 回答