【发布时间】:2021-04-02 10:55:06
【问题描述】:
我正在尝试在 grafana 7.4.x 中创建一个动态仪表板,其中包含可以选择的变量。这适用于一个例外。如果没有选择值,则该值为空,将导致 MySQL (5.7.32) 错误。
$value = 1,2,3
SELECT *
FROM TEST
WHERE ID IN ( ${test:csv} )
空值导致:
$value = ''
SELECT *
FROM TEST
WHERE ID IN ( )
如何重写这个查询,以免导致错误,而只是忽略这个 where 语句(因为有很多 AND)
【问题讨论】:
-
是的,但 0 将导致 0 个结果。这是作为众多过滤器之一的可选过滤器。
-
如果您要从多个过滤器动态构建
WHERE子句,请在添加ID IN (...)之前检查列表是否为空。 -
怎么样? IF (${test:csv} , 0,1) 也会导致: IF ( , 0, 1)
-
不是在 SQL 中,而是在您用于创建查询的编程语言中。
-
这正是问题所在。这是不可能的,它是 Grafana 作为前端,您只能将 MySQL 添加为 Query。