从Google电子表格生成SQL更新

时间:2013-04-19 20:12:09

标签: sql google-sheets

我有一个像这样组织的Google电子表格:

       A         B         C    
  |---------+---------+---------|
1 | Column1 | Column2 | Column3 |
  |---------+---------+---------|
2 | value1  | value2  | value3  |
  |---------+---------+---------|

我想在单元格上生成以下SQL查询:

update TableX set Column1 = value1, Column2 = value2, Column3 = value3

我知道可以这样做:

=CONCATENATE("update TableX set ",A1," = ",A2,", ",B1," = ",B2,", ",C1," = ",C2)

但有没有更好的方法来做到这一点,一个可以轻松添加或删除新行的方法?我正在寻找一些内容(例如下面的函数):

=CONCATENATE("update TableX set ",JOINTWOROWS(" = ", ", ",A1:C1,A2:C2))

其中参数1和2是列内分隔符和列之间的分隔符。

我还希望能够添加新行,这会自动获得新的更新查询,例如:

       A         B         C         D
  |---------+---------+---------+---------|
1 | Column1 | Column2 | Column3 | Column4 |
  |---------+---------+---------+---------|
2 | value1  | value2  | value3  | update1 |
  |---------+---------+---------+---------|
3 | value1a | value2a | value3a | update2 |
  |---------+---------+---------+---------|
4 | value1b | value2b | value3b | update3 |
  |---------+---------+---------+---------|
5 | value1c | value2c | value3c | update4 |
  |---------+---------+---------+---------|

2 个答案:

答案 0 :(得分:1)

未经测试的想法:使用公式

添加新行(第3行)
  

= CONCATENATE(“,”; A1;“='”; A2;“')

只要您愿意,将此行拖到右侧。

在更新单元格公式中,使用:

  

= CONCATENATE(“更新TableX set”; A3:XYZ3)

答案 1 :(得分:1)

如果我理解正确,在你的例子的D1中填充额外的行:

=ArrayFormula(IF(ROW(A:A)=1;"Column4";IF(LEN(A:A)*LEN(B:B)*LEN(C:C);"update TableX set "&A1&" = "&A:A&", "&B1&" = "&B:B&", "&C1&" = "&C:C;IFERROR(1/0))))