我需要检查SQL数组中是否存在几个值中的一个(或多个)。在它最简单的形式中,它看起来像这样:
SELECT
(1, 7, 8) IN (1, 2, 3, 4, 5)
FROM DUAL显然,这句话不会起作用。只有当我只检查数组中的一个值时,它才起作用。但我需要知道是否有一个(不是全部!)我提供的值的一部分存在于SQL数组中。如果数组中存在一个或多个值,则该语句应返回TRUE,如果没有值,则返回FALSE。
我意识到我可以添加几个检查,如下所示:
SELECT
1 IN (1, 2, 3, 4, 5)
OR 7 IN (1, 2, 3, 4, 5)
OR 8 IN (1, 2, 3, 4, 5)
FROM DUAL但是,我的编程逻辑以数组格式"(1,7,8)“提供值,每次我需要运行SQL语句时,该数组中的值的数量都不同。如果我能以某种方式将这个数组粘贴到现有的SQL语句中,而不是在每次运行时重新构建SQL语句,并为数组中的每个值创建"OR“语句,那将是非常方便的。
有没有办法做到这一点?我使用的是MySQL btw。
提前感谢,保持好的编程!
发布于 2011-08-11 15:51:42
可以将REGEXP与逗号分隔的字符串一起使用。您必须首先将值转换为字符串。
SELECT REPLACE(CONCAT(",", "1, 7, 8", ",")," ", "")
REGEXP CONCAT(",", REPLACE(REPLACE("1 ,2 , 3 , 4 ,5 " ," ", ""),",", ",|,"), ",")
FROM DUAL解释:
发布于 2011-07-16 04:48:42
您是否可以使用简单连接来创建动态/临时表,并与其他值进行简单连接?
create table a (
id int);
insert into a values (1),(7),(8);
create table b like a;
insert into b values (1),(2),(3),(4),(5);
select a.* from a
inner join b
on a.id = b.idhttps://stackoverflow.com/questions/6712835
复制相似问题