是否可以从find_in_set()中的数据集项连接字符串?

时间:2018-10-29 12:05:04

标签: mysql

我正在使用以下查询:

set @var = 'A,B,C';
select from tbl_one where find_in_set(col_x, @var);

但是,我还有另一个表,该表具有基于@var的列值,如下所示:

id    col_a
1     my.A
2     my.B
3     my.C

我想做的是使用相同的@var,但是将数据集中的项目与“ my”连接起来。就能使用find_in_set(col_a, @var)执行选择,这类似于

select * from table_two where col_a in ('my.A', 'my.B', 'my.C')

有可能吗?

1 个答案:

答案 0 :(得分:1)

  • 您可以使用Replace()函数将子字符串my.删除到col_x列中,以进行比较。 请注意,它不会修改原始数据。
  • 现在,您可以使用Find_in_set()函数来查找匹配项。

尝试以下操作:

SET @var = 'A,B,C';
SELECT FROM tbl_two 
WHERE FIND_IN_SET(REPLACE(col_x, 'my.', ''), @var);

如果有可能在my.值的中间/结尾也有col_x子字符串,那么我们只需要从头开始替换即可。在这种情况下,我们可以使用Trim()函数:

SET @var = 'A,B,C';
SELECT FROM tbl_two 
WHERE FIND_IN_SET(TRIM(LEADING 'my.' FROM col_x), @var);