2013-12-08 4 views
0

이러한 쿼리가 있지만 아무 것도 선택하지 않지만해야합니다. 그래서 쿼리MySql, CONCAT 및 NOT IN 문자열 값

SELECT * 
FROM _custom_access_call 
WHERE CONCAT(type, name) NOT IN ('string1', 'string2', 'string3') 

null과 '1sfgsg'값이있는 테이블 항목에 수동으로 추가하지만 선택되지 않았습니다. 왜? 연결 값이 배열에없는 모든 항목을 선택해야합니다. 그것을 다루는 데 도움이됩니다.

답변

3

값 중 하나가 NULL 인 경우 CONCAT()NULL을 반환합니다. NULL NOT IN (...)은 항상 NULL입니다. 또한 NULL IN (...)은 항상 NULL입니다. NULL을 사용하려면 명시 적으로 처리해야합니다. 이 특정 경우에는 NULL을 반환하지 않기 때문에 CONCAT_WS()이 도움이됩니다.

SELECT * 
FROM _custom_access_call 
WHERE CONCAT_WS('', type, name) NOT IN ('string1', 'string2', 'string3'); 

또한이 쿼리는 인덱스를 사용할 수 없습니다.