我正在使用以下查询:
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')
有可能吗?
答案 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);