SQL 更新语句中的 Trim 个字符?

Trim characters in a SQL update statement?

是否可以对 SQL 更新语句中的列执行 trim?基本上,一旦在我的 gridview 上单击按钮,我希望它从左侧 trim 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

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


参见sql的SubString方法。您的 sql 查询将是

UPDATE tbltest 
SET Status = SubString(Status, 0, CASE WHEN LEN(Status) >= 10 THEN 10 ELSE LEN(Status) END) 
where TablePkColumn = @myPkParameter

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

其他要点

  • 请将您的连接字符串包装在 using 块中,以便连接在您完成后始终关闭。或者使用 finally 块来关闭连接。
  • 使用参数化查询而不是字符串连接。这是针对您的 where 子句的,但您应该在查询中使用外部输入的任何地方执行此操作。