【问题标题】:Unable to pass decimal value in query?无法在查询中传递十进制值?
【发布时间】:2018-05-08 03:01:45
【问题描述】:

喂!我有一个包含站点及其版本号的所有服务器的电子表格。我想要另一张表来提取某个版本号以下的网站,以便我知道需要更新哪些网站。这样做时,我收到以下错误。

Unable to parse query string for Function QUERY parameter 2: PARSE_ERROR: Encountered " <DECIMAL_LITERAL> ".6 "" at line 1, column 50. Was expecting one of: "and" ... "or" ... ")" ...

这是我的查询:

=query({'Heyo1 - CLOUD'!A:G;Heyo2!A:G;Heyo3!A:G;Heyo4!A:G;'Heyo4 - VPS'!A:G;'Heyo5 - VPS'!A:G}, "Select * Where (Col2 = 'Wordpress' and Col4 < 3.9.6 or Col2 = 'Joomla' and Col4 < 3.8.7 ) order by Col2 DESC ")

任何帮助将不胜感激!

【问题讨论】:

  • 是我还是你的=query... 语法不完整/fcked?喜欢缺少括号
  • @MarcinOrlowski na 查询都很好,没有问题

标签: google-sheets google-docs google-sheets-query


【解决方案1】:

它在抱怨 .6,因为 Google 电子表格认为您的查询包含无效的小数:

Col4 &lt; 3.9.6

还有

Col4 &lt; 3.8.7

但由于这些是版本号,您需要将它们作为字符串进行比较(请参阅下面的警告)。

根据您的 cmets,您可能会得到以下结果:

=query({'Heyo1 - CLOUD'!A:G;Heyo2!A:G;Heyo3!A:G;Heyo4!A:G;'Heyo4 - VPS'!A:G;'Heyo5 - VPS'!A:G}, "Select * Where (Col2 = 'Wordpress' and Col4 < '3.9.6' or Col2 = 'Joomla' and Col4 < '3.8.7' ) order by Col2 DESC ")

请记住,如果由于某种原因最终得到像 3.20.0 这样的版本号,则在比较字符串时它被认为小于 3.3.0。如果发生这种情况,您可能需要一个自定义函数,通过按句点拆分字符串并分别处理每个元素来标记版本号。

【讨论】:

  • 是的,这是一个版本号,知道如何将其转换为查询中的文本吗?
  • 现在想一想……当你有像3.21.0 这样的版本时会变得很困难,因为从词汇上讲它比3.9.0
  • 这不会像 Joomla 和 Wordpress 那样成为问题,一旦它们达到 x.x.9,它们通常会转到下一个值
  • @Jordan 酷,我刚刚更新了答案。试试看,我想它对你有用。
  • 已经搞定了,谢谢。另外,请注意我调用了错误的列,这没有帮助......
猜你喜欢
  • 1970-01-01
  • 2017-11-07
  • 1970-01-01
  • 2013-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-23
  • 2013-08-20
相关资源
最近更新 更多