복붙노트

[SQL] PostgreSQL의에서 어떤 연산자 대 IN

SQL

PostgreSQL의에서 어떤 연산자 대 IN

IN과 PostgreSQL에서 모든 연산자의 차이점은 무엇입니까? 모두의 작동 메커니즘은 같은 것 같다. 사람이 예를 들어 이것을 설명 할 수 있습니까?

해결법

  1. ==============================

    1.논리적으로, 설명서를 인용 :

    논리적으로, 설명서를 인용 :

    그러나 두 구문 IN 변종 두가 어떠한 구조의 변형이 있습니다. 세부:

    세트를 취하는 IN () 변형에 상당 ANY = () 여기서 입증 된 바와 같이, 일련의 촬영 :

    그러나 각각의 두 번째 변종은 다른에 해당되지 않습니다. IN의 두 번째 변형은 쉼표로 구분 된 값리스트를 취하면서 ANY 구조의 두 번째 변형은, (실제 어레이 형이어야) 배열 걸린다. 값을 전달하며 특별한 경우 다른 쿼리 계획을 초래할 수있는 다른 제한이 리드 :

    그것은 단지 = 다양한 운영하지 결합 될 수있는대로 모든 구조는 훨씬 더 다양합니다. LIKE의 예 :

    SELECT 'foo' LIKE ANY('{FOO,bar,%oo%}');
    

    큰 값의 수, 각 더 나은 세트의 스케일을 제공 :

    관련 :

    반전의 :

    SELECT * FROM foo WHERE id = ANY (ARRAY[1, 2]);
    

    "ID가 배열에없는 행을 찾을 수 있습니다"-이다 :

    SELECT * FROM foo WHERE id <> ALL (ARRAY[1, 2]);

    같은 어느과 같다 :

    SELECT * FROM foo WHERE NOT (id = ANY (ARRAY[1, 2]));

    ID를 가진 행은 NULL이 표현 중 하나 통과하지 못한 것입니다. NULL 값을 추가로 포함하려면 :

    SELECT * FROM foo WHERE (id = ANY (ARRAY[1, 2])) IS NOT TRUE;
  2. ==============================

    2.이 명백한 점,뿐만 아니라 다른 답변에 포인트가 있습니다 :

    이 명백한 점,뿐만 아니라 다른 답변에 포인트가 있습니다 :

    한편 :

    그들이 어떤이리스트로 일을하지 않는 것을 잊고 때 여러 번 나를 잡았습니다 정확히 동일 추정.

  3. from https://stackoverflow.com/questions/34627026/in-vs-any-operator-in-postgresql by cc-by-sa and MIT license