by webma [2022.07.20 00:21:29]
안녕하세요.
개발자 분 쿼리를 보다가 이해가 안되는 쿼리문이 있어 질문을 해 봅니다.
: inv_req = '00'
SELECT *
FROM ITEM
WHERE 1= 1
AND ITEM_ID =1001
AND :inv_req IN(1,2);
이런 쿼리가 있는데요 제 상식으로는 IN절 앞에 컬럼명이 있어야 하는데
저 쿼리에는 바인드 변수만 있고 해당 컬럼명이 없어서, 저 쿼리는 어떻게 해석을 해야 하는걸까요?
SELECT *
FROM ITEM
WHERE 1= 1
AND ITEM_ID =1001
AND 0 IN(1,2);
이렇게 해석을 해야 하는건지요??
아직 초보인지라 많이 가르쳐 주세요
생각하신대로 동작하는게 맞습니다..쿼리 실행 플래그같기도 하고 그러네요.
알고 계신 상식은 상식이 아니라 고정관념입니다.
좌변은 컬럼 우변은 값이라는 고정관념을 버리세요.
(A = 1) 과 (1 = A) 는 같은 조건입니다.
좌변, 우변 모두 어떤 표현식이든 올 수 있습니다.
컬럼, 상수값 뿐 아니라 변수, 서브쿼리 계산식, 함수 기타 등등의 가능한 표현식