[SQL] 값의 "NOT IN"목록에 대한 MySQL의 변수 형식
SQL값의 "NOT IN"목록에 대한 MySQL의 변수 형식
유형의 쿼리에서 변수를 설정하려고 미쳐가는 :
SET @idcamposexcluidos='817,803,495';
그래서 난 다음에 그것을 사용할 수 있습니다
WHERE id_campo not in (@idcamposexcluidos)
나는 운이 서로 다른 형식의 변수를 정의하는 시도하고 위 대한 구체적인 예를 찾을 수가 없습니다 :
SET @idcamposexcluidos='(817,803,495)';
...
WHERE id_campo not in @idcamposexcluidos
SET @idcamposexcluidos=817,803,495;
성공하지 못했다. 그것도 오류를 반환하거나 값을 무시합니다.
해결법
-
==============================
1.당신은 그런 IN 절을 사용할 수 없습니다. 그것은 당신의 IN 절에서 하나의 문자열로 컴파일합니다. 그러나 IN 절은 별도의 값을 필요로한다.
당신은 그런 IN 절을 사용할 수 없습니다. 그것은 당신의 IN 절에서 하나의 문자열로 컴파일합니다. 그러나 IN 절은 별도의 값을 필요로한다.
WHERE id_campo not in (@idcamposexcluidos)
에 컴파일
WHERE id_campo not in ('817,803,495')
하지만해야
WHERE id_campo not in ('817','803','495')
FIND_IN_SET를이 중 하나를 사용하여 동적 SQL을 극복하기 위해 또는 MySQL의에서 당신은 사용할 수 있습니다 :
SET @idcamposexcluidos='817,803,495'; ... WHERE FIND_IN_SET(id_campo, @idcamposexcluidos) = 0
하지만 FIND_IN_SET 같은 () 함수를 사용하여 인덱스를 사용할 수 없습니다.
-
==============================
2.당신은 MySQL의> 5.1을 사용하는 경우, 당신은 사용할 수 있습니다 :
당신은 MySQL의> 5.1을 사용하는 경우, 당신은 사용할 수 있습니다 :
CREATE TYPE lista as ( clave int4, valor int4 ); CREATE OR REPLACE FUNCTION test(IN vArray lista[]) ... WHERE FIND_IN_SET(id_campo, vArray) ...
다른 경우에 당신은 트릭을 사용할 수 있습니다 :
WHERE id_campo IN ( SELECT 817 as valor UNION ALL SELECT 803 as valor UNION ALL SELECT 495 as valor)
-
==============================
3.) (CONCAT를 사용하여 파이프 분리기 (쉼표 대신), 그리고 약간의 "반대 논리는"대신하지만, NOT 목록에서의 변수를 사용할 수 있습니다 - LIKE NOT 사용하여!
) (CONCAT를 사용하여 파이프 분리기 (쉼표 대신), 그리고 약간의 "반대 논리는"대신하지만, NOT 목록에서의 변수를 사용할 수 있습니다 - LIKE NOT 사용하여!
예:
SET @idcamposexcluidos = '|817|803|495|'; SELECT * FROM your_table WHERE @idcamposexcluidos NOT LIKE CONCAT('%|', id_campo, '|%');
이 문자열과 숫자 열 모두 모두 작동합니다.
from https://stackoverflow.com/questions/11957643/mysql-variable-format-for-a-not-in-list-of-values by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL 그룹에 의해 및 최대 (0) | 2020.04.11 |
---|---|
[SQL] SQL Server에서 lastIndexOf에서도이 있습니까? (0) | 2020.04.10 |
[SQL] 사용자 정의 날짜 / 시간은 SQL Server의 서식 (0) | 2020.04.10 |
[SQL] Linq는 계층 적 데이터 - 옵션 및 성능 (0) | 2020.04.10 |
[SQL] RODBC SQL 쿼리에 R 변수를 전달? [복제] (0) | 2020.04.10 |