MySQL中是否有一种方法可以对子字符串使用类似于“ IN”的函数

时间:2019-08-01 01:35:56

标签: mysql grafana

我正在将最新版本的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       |

0 个答案:

没有答案