我试图添加一个前导零到主键,在我的数据集中只有5个字符。我们的主键是6个字符,并且从我收到的Excel文件中删除了前导零。我想在下面的命令语句中添加前导零,但它无法识别"CONVERT"函数。我还是新手,不知道使用类似的功能。非常感谢您的帮助。
("SELECT (SELECT RIGHT('000000'+CONVERT(VARCHAR,[Primary #]),6)) AS [Primary #],[Gourmet #],[Unit],FROM [" + sheetName + "]", con)
下面的完整代码
Dim sqlCon As New SqlConnection("Server=MyServer;Database=MyDatabase;User Id=xxx;Password=xxxxxx")
sqlCon.Open()
Dim excelCmd2 As New System.Data.OleDb.OleDbCommand("SELECT (SELECT RIGHT('000000'+CONVERT(VARCHAR,[Primary #]),6)) AS [Primary #],[Gourmet #],[Unit] FROM [" + sheetName + "]", con)
Dim excelRead As New System.Data.OleDb.OleDbDataAdapter()
Dim dt2 As New DataTable()
excelRead.SelectCommand = excelCmd2
excelRead.MissingSchemaAction = MissingSchemaAction.AddWithKey
excelRead.Fill(dt2)
DataGridView1.AutoGenerateColumns = True
DataGridView1.DataSource = dt2
DataGridView1.Refresh()
Datagridview允许我查看Datatable中的内容,以确保这些额外的零出现。之后,来自我的excelCmd2的数据集在我的sql表中具有所有相等的列参数,如下所示:
Using dataRead As System.Data.OleDb.OleDbDataReader = excelCmd2.ExecuteReader()
If dataRead.HasRows() Then
While dataRead.Read()
Dim sqlCmd As New SqlCommand
sqlCmd.Connection = sqlCon
sqlCmd.CommandType = CommandType.Text
sqlCmd.CommandText = sqlUpdate
sqlCmd.Parameters.Add("@primary", SqlDbType.VarChar).Value = Convert.ToString(dataRead.Item("Primary #"))
sqlCmd.Parameters.Add("@spc", SqlDbType.VarChar).Value = Convert.ToString(dataRead.Item("Gourmet #"))
sqlCmd.Parameters.Add("@unit", SqlDbType.VarChar).Value = Convert.ToString(dataRead.Item("Unit"))
sqlCmd.ExecuteScalar()
End While
End If
End Using
虽然它不能让您看到添加的前导零,但您可以更改
行sqlCmd.Parameters.Add("@primary", SqlDbType.VarChar).Value = Convert.ToString(dataRead.Item("Primary #")
sqlCmd.Parameters.Add("@primary", SqlDbType.VarChar).Value = Convert.ToString(dataRead.Item("Primary #").PadLeft(6, "0"c)
添加所需的前导零,这意味着SELECT命令简化为
"SELECT [Primary #], [Gourmet #], [Unit] FROM [" & sheetName & "]"
(VB中的字符串连接操作符。. NET是&
,不是+
)
使用Padleft添加前导零。
primaryId.padleft(6, "0")
或者如果它还没有被格式化为字符串
primaryid.tostring.padleft(6, "0")
由于您希望在命令文本中使用填充版本,因此您可能需要创建一个临时字符串变量来保存新值,以帮助代码的可读性。