【问题标题】:Remove last comma in StringBuilder SQL Query删除 StringBuilder SQL 查询中的最后一个逗号
【发布时间】:2015-01-23 18:05:41
【问题描述】:

我正在使用字符串生成器创建 SQL 更新查询,如果末尾有逗号,我需要将其删除。

例如:

 Dim query As New StringBuilder
 query.AppendLine("Update Vendor")
 If Not String.IsNullOrEmpty(vendInfo.Name) Then
      query.AppendLine("Set VendorName= @VendorName, ")
 End If
 If Not String.IsNullOrEmpty(vendInfo.VendorType) Then
      query.AppendLine("VendorType= @VendorType, ")
 End If

最后一项的查询错误,因为总会有一个逗号。完成所有 If 语句后,我想从末尾删除一个逗号。

有什么想法吗?

【问题讨论】:

    标签: sql vb.net string stringbuilder


    【解决方案1】:

    最简单的方法是为每个变量创建一个集合(对不起,这里是 c#)

    var list = new List<string>();
    // add your vars
    if(!string.IsNullOrEmpty(vendInfo.Name))
          list.Add("Set VendorName= @VendorName");
    // and join them
    var vars = string.Join(", ", list);
    

    秘密是String.Join,它很容易连接一个可枚举的字符串,在每个字符串之间放置一个分隔符(但不是在末尾)。

    【讨论】:

      【解决方案2】:

      只需减小 StringBuilder 的 Length 属性

      query.Length -= 2
      

      但是,请注意您的 UPDATE 查询。似乎缺少 WHERE 子句,并且在 TableName 和 SET 指令之间需要一个空格。
      如果您没有 Vendinfo.Name,也会出现另一个问题。您排除插入 SET 的代码,但这是更新的第一个字段所必需的

       Dim query As New StringBuilder
       query.AppendLine("Update Vendor SET ")
       If Not String.IsNullOrEmpty(vendInfo.Name) Then
            query.AppendLine("VendorName= @VendorName, ")
       End If
       If Not String.IsNullOrEmpty(vendInfo.VendorType) Then
            query.AppendLine("VendorType= @VendorType, ")
       End If
      
       If query.Length > 18 Then
          ' 18 chars are fixed in UPDATE Vendor SET'
          query.Length -= 2
          ' add the WHERE clause'
          ......
       End If
      

      【讨论】:

      • ...只要字符串格式保持不变并且空格没有被删除... [是的 - 我知道这是一个旧帖子!]
      猜你喜欢
      • 1970-01-01
      • 2016-07-25
      • 1970-01-01
      • 1970-01-01
      • 2015-11-14
      • 1970-01-01
      • 1970-01-01
      • 2012-12-03
      • 1970-01-01
      相关资源
      最近更新 更多