我正在将最新版本的grafana与MySQL后端一起使用。 Grafana允许您创建可以设置为多个值的下拉变量。像这样使用mySQL“ IN”命令时,这很有用:
select * from t1 where columnA IN ($grafanaVariable)
可以将grafanaVariable设置为一个或多个值,以便MySQL查询看起来像这样
select * from t1 where columnA IN ('grafanaVariable1', 'grafanaVariable2', ...)
我遇到了一个最近的用例,其中有一个MySQL列,其中包含可变数量的子字符串。我想将这些子字符串放在grafana变量中,并使用类似于产生相似结果的IN命令的命令。
我尝试使用INSTR和POSITION命令,但是当grafanaVariable设置为多个值时它们将不起作用。我也尝试过使用IN命令,但不适用于子字符串。
以columnA作为字符串的工作示例:
| columnA | columnB |
| cat | 1000 |
| dog | 1001 |
| crab | 1002 |
| horse | 1003 |
| cat | 1004 |
| crab | 1005 |
$grafanaVariable = distinct(columnA);
MySQL查询:
select columnB from t1 where columnA IN ($grafanaVariable)
用户在grafanaVariable下拉菜单中选择“螃蟹”和“狗”
结果是:
| 1001 |
| 1002 |
| 1005 |
将columnA作为子字符串的示例:
| columnA | columnB |
| subString1subString2 | 1000 |
| subString1subString2subString3 | 1001 |
| subString3 | 1002 |
| subString2subString3 | 1003 |
| subString3subString4 | 1004 |
$grafanaVariable = ('subString1', 'subString2', 'subString3');
用户选择“ subString1”和“ subString2”
所需结果为:
| 1000 |
| 1001 |
| 1003 |