如何在DataTable列中添加前导零

4
我想在datatable的列值前添加零,如果长度小于6位数。
例如:我有一个datatable中的“SRNumber”列,其值为123、2345、56、34523等,我希望我的结果是000123、002345、000056、034523等。
注意:我想在Datatable中操作数据,而不是在检索数据的SQL查询中进行操作。我已经看到了解决方案,可以将前导零添加到字符串或变量中,但在我的情况下,希望对datatable列中的所有值都这样做。

http://msdn.microsoft.com/en-us/library/system.string.padleft(v=vs.110).aspx - eddie_cat
http://msdn.microsoft.com/en-us/library/dd260048(v=vs.110).aspx - eddie_cat
2
可能是C#将int转换为带有填充零的字符串?的重复问题。 - eddie_cat
如果您想对所有值进行操作,就需要循环遍历这些值并应用PadLeft... - eddie_cat
@eddie_cat:我知道如何对一个字符串或变量进行零填充。但是在SO上没有与DataTable列相关的具体解决方案。 - Praveen Mitta
你可以在将数据源填充到表中之前,在所有项目上应用PadLeft,或者你可以循环遍历DataTable本身的列。 - eddie_cat
3个回答

2

好的,我在@eddie_cat的帮助下弄清楚了。这是我所做的。

foreach (DataRow row in table.Rows)
{
      row["SRNumber"] = row["SRNumber"].ToString().PadLeft(6, '0');
}
table.AcceptChanges();

在这里,“SRNumber”是我正在添加前导零的列名。希望这能帮助到某些人。


0
eddie_cat所说, 循环遍历值并更新所需字段。
foreach(DataRow dr in mydatatable)
{
      dr[myfield] = String.Format("{0:0000}", int.parse(dr[myfield]))
}

请注意,您首先应将字符串转换为整数。 我使用的示例 int.parse(...) 可能会在 dr[myfield]dbnull 时抛出异常。

0

我不确定您是在寻找 SQL 解决方案还是 C# 解决方案,因此我将提供 SQL 解决方案,因为其他人已经给出了 C# 解决方案:

 UPDATE MYTABLE

 SET SRNumber = RIGHT('000000' + SRNumber,6)

 WHERE len(SRNumber) < 6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接