是否有一个技巧可以让MySQL;“忽略”;UPDATE语句的SET子句中的尾随逗号? 从C++中,我以编程方式生成了更新>代码>,使剥离尾逗号困难: UPDATE `myTable` SET `Field1` = "value", `Field2` = "value", `Field3` = "value", WHERE `Field4` = "value";

是否有一个技巧可以让MySQL;“忽略”;UPDATE语句的SET子句中的尾随逗号? 从C++中,我以编程方式生成了更新>代码>,使剥离尾逗号困难: UPDATE `myTable` SET `Field1` = "value", `Field2` = "value", `Field3` = "value", WHERE `Field4` = "value";,mysql,Mysql,是否有一些静态的、无操作键/值对可以插入到最终的列值规范之后,这会使后面的逗号“OK”?还是我必须使C++代码复杂化,以避免完全写?< /P> 一些明显等同于以下无效方法的东西会很好 UPDATE `myTable` SET `Field1` = "value", `Field2` = "value", `Field3` = "value", --- 1 = 1 WHERE `Field4` = "value"; 您可以对其中一行进行二次复制,并去除逗号,如下所示: UPD

是否有一些静态的、无操作键/值对可以插入到最终的列值规范之后,这会使后面的逗号“OK”?还是我必须使C++代码复杂化,以避免完全写?< /P> 一些明显等同于以下无效方法的东西会很好

UPDATE `myTable` SET 
   `Field1` = "value",
   `Field2` = "value",
   `Field3` = "value",
--- 1 = 1
WHERE `Field4` = "value";

您可以对其中一行进行二次复制,并去除逗号,如下所示:

UPDATE `myTable` SET 
   `Field1` = "value",
   `Field2` = "value",
   `Field3` = "value",
   `Field3` = "value"
...

在mysql查询中,我看不到任何优雅的方法

<>在C++代码中,有很多方法可以做到这一点:

  • 在创建带有额外昏迷的
    SET
    子句后移除最后一个昏迷应该非常简单:
    qry[lgth-1]=''
    qry.erase(qry.length()-1)

  • 我假设您有某种循环来构建
    SET
    子句,检查循环中的索引
    I
    是经典的方法,或者构建字符串数组并使用一些
    join(stringList,separator)
    函数


    • 除非您愿意按照Igoel的建议复制一个值(如果值很长,这可能不理想),简单的答案是否定的

      一种令人鼓舞的可能性是使用表示传入值,这样最终值就可以复制,而无需在查询中再次显示(我希望查询优化人员能够将其删除):

      唉,这在
      UPDATE
      语句中不受支持,只在触发器体中受支持


      <>你必须在C++执行之前,通过字符替换(<代码>,<代码> <代码> <代码>)或字符删除来执行语句;前者可能会产生比现在更复杂的代码,后者可能是低效的(取决于查询生成代码的结构),但这仍然是您的最佳选择。

      < P> >实现这一点,因为您必须在C++代码中这样做,假设您正在使用
      std::ostream
      构建语句,则将“put”光标向后拉一个字节,以便下一个字符替换尾随的
      ,而不是跟随它:

      #包括
      #包括
      int main()
      {
      std::stringstream-ss;
      
      ss您可以在数据之前放置逗号,如下所示:

      UPDATE `myTable` SET 
         `Field1` = "value"
       , `Field2` = "value"
       , `Field3` = "value"
      WHERE `Field4` = "value";
      

      我不会调用一个简单的<代码>,如果
      语句不为最后一列“复杂C++代码”添加逗号@带有\u no\u名称的\u horse\u:当从一个大表中的宏生成很长的列表时,这是很复杂的。如果在查询结束时有四到五个字符可以转储,则将宏复制到最后一个元素是次优的。不是每个查询构建函数都是简单的循环,有时在这样缩放时甚至只是一个循环分支比预期的要少…特别是如果有一个节省空间和时间的替代方案。唉,似乎不是这样。不,不是循环。不是那么简单…构建一个数组然后加入它甚至比不上添加到语句体中的一些假设的四到五个字符便宜。是的,在简单的情况下,我也是.但这不是一个简单的例子:)这仅仅是把问题带到了起点!
      UPDATE `myTable` SET 
         `Field1` = "value"
       , `Field2` = "value"
       , `Field3` = "value"
      WHERE `Field4` = "value";