修剪SQL更新语句中的字符?

时间:2016-04-19 15:22:22

标签: sql asp.net vb.net trim

是否可以在SQL更新语句中对列进行修剪?基本上,一旦在我的gridview上单击按钮,我希望它从左侧修剪10个字符,用于列" Status"对于在gridview上选择的列,我可以使用下面的内容吗?

   Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand
        If (e.CommandName = "Unlock") Then

            Dim index As Integer = Convert.ToInt32(e.CommandArgument)
            Dim row As GridViewRow = GridView1.Rows(index)


            Try

                Dim Con As SqlConnection
                Dim cmd As SqlCommand
                Con = New SqlConnection
                Con.ConnectionString = "Data Source="
                Con.Open()

                cmd = New SqlCommand
                cmd.Connection = Con

                '''''Can I trim the status column 10 characters where it is the selected row?'''''''''''
                cmd.CommandText = "UPDATE tbltest SET Status = '" & ?????? & "' where row = '" & ???????? & "';"

                cmd.ExecuteNonQuery()

            Catch ex As System.Exception


            End Try

        End If
    End Sub

1 个答案:

答案 0 :(得分:0)

有关如何修剪字符串的信息,请参见下文。这不回答如何在Sql中选择正确的记录。您需要弄清楚表中的标识符,并确保您的数据网格使用相同的标识符。理想情况下,标识符是表的主键。然后使用参数化查询将其作为WHERE子句中的参数传递。

请参阅sql的SubString方法。你的SQL查询将是

saveQuery = "INSERT INTO MasterClientChemicals ";
saveQuery += "(ClientID, CompanyName, MSDS, [MFR NAME], [PROD NAME], [MAX WT], CONT, AREA, [CAS #], [%], [CHEM NAME], [NFPA/FPRACH/GLOES], [Client MSDS], ";
saveQuery += "[Chem % Min], PS, [Specific Gravity], Density, DOT, UFC, [AIR TITLE I VOC PERCENT], [AIR TITLE I VOC VOL], [AIR TITLE I VOC WEIGHT], [Status Date]) ";
saveQuery += "VALUES (@0, @1, @2, @3, @4, @5, @6, @7, @8, @9, @10, @11, @12, @13, @14, @15, @16, @17, @18, @19, @20, @21, @22)";

db.Execute(saveQuery, clientID, companyName, CMPMSDS, CMPMFRNAME, CMPPRODNAME, CMPMAXWT, CMPCONT, CMPAREA, CMPCASNumber, CMPPercent, CMPCHEMNAME, NFPAFPRACHGLOES, CMPClientMSDS, CMPChemMin, CMPPS, CMPSpecificGravity, CMPDensity, CMPDOT, CMPUFC, CMPVOCPercent, CMPVOCVolume, CMPVOCWeight, CMPStatusDate);

var newID = db.GetLastInsertId();

我添加了一个长度检查,以确保在少于10个字符可用时不会出现异常,在这种情况下会返回空字符串。

其他要点

  • 请将您的连接字符串包装在UPDATE tbltest SET Status = SubString(Status, 0, CASE WHEN LEN(Status) >= 10 THEN 10 ELSE LEN(Status) END) where TablePkColumn = @myPkParameter 块中,以便在完成连接后始终关闭连接。或者,使用using块关闭连接。
  • 使用参数化查询而不是字符串连接。这适用于您的where子句,但您应该在查询中使用外部输入的任何位置执行此操作。