我目前正在从SQL中选择一堆值并将它们加载到dataTable中。我试图找到该特定列并更新每行中的值。
Dim dt as DataTable
'not all code is included - but this definitely works on selecting data
sql = " Select value1, value2, value3 from TblA "
cmd = New SqlClient.SqlCommand(sql, conn)
Dim reader As SqlDataReader = cmd.ExecuteReader
dt.Load(reader)
return dt
我的目标是从VALUE3中的每一行获取值,并通过名为 - UpdateFormat的小格式化函数运行它。有点像....
Dim specValue As String
For Each row As DataRow In dt.Rows
UpdateFormat(specValue ) = row.Item("Value3")
Next row
我希望更新每个值并更新dataTable,使其具有正确的值。
答案 0 :(得分:1)
在之前的一集中,我们了解到您希望将该列中的数据格式从012345678
格式化为012-34-5678W
,其中列为VarChar,并且' W'是固定的。
您可以在SQL中进行格式化:
Dim sql = <sql>
SELECT Id, Foo, Bar, ColA,
CONCAT(SUBSTRING([Value3],1,3),
'-',
SUBSTRING([Value3],4,2),
'-',
SUBSTRING([Value3],6,4),
'W' ) AS NewV3Value
FROM
dbo.TableBob
</sql>.Value
这样做,该列已经发送给您已格式化。根据您的数据库风格,确切的语法可能会有所不同。
<sql>...</sql>.Value
只是一个XML文字,它允许您格式化长查询或复杂查询,使您更容易阅读。
在表格中自己做。由于格式很容易应用,你真的不需要一种方法来实现它:
Dim tmp As String
For Each row As DataRow In dt.Rows
tmp = row.Field(Of String)("Value3")
row("Value3") = String.Format("{0}-{1}-{2}W",
tmp.Substring(0, 3),
tmp.Substring(3, 2),
tmp.Substring(5, 4))
Next row
tmp
var只是为了缩短代码。