Oracle 11gR2 Expression Edition 사용. 내 데이터는 우리가 열 값의 특정 범위 내에없는 경우 기록을 찾기 위해 노력하고있다
문자열 비교를위한 Oracle과 다른 결과가 같지 않음 <= and > =
ordertype
---------
ZOCO
ZOSA
ZOST
를 다음과 같습니다.
내가 <하여 쿼리를 실행하면
= 및> = 운영자 :SELECT * FROM table where ordertype <= 'ZAAA' OR ordertype >= 'ZZZZ';
는 내가 0 결과를 얻을 수 있습니다.
이것은 올바른 대답입니다. I 사이에 사용하지 않을 경우
그러나 : SELECT * FROM table where ordertype NOT BETWEEN 'ZAAA' AND 'ZZZZ';
, 그것은 여러 히트 곡을 제공합니다.
제 생각에는 두 구문 모두 동일한 결과를 주어야하지만 이해하지 못하는 것입니다. 내가 뭘 놓치고 있니? 이유 기존의 많은 코드는 이미이 구문을 가지고 있으며 이유를 이해하지 않고 변경하지 않기 때문에 NOT BETWEEN을 사용하고 싶습니다.
감사합니다.
게시자 여러분 께 감사드립니다. 쿼리를 다시 실행하고 첫 번째 쿼리에서 "OR"을 수정 한 후 결과가 동일합니다. 나는 오라클 문자 정렬이 예상대로 인식하지 못하는 이유에 대해 여전히 의문이 있지만 NOT BETWEEN과 <의 차이점에 대한 나의 질문은 거짓 경보입니다. 혼란에 사과드립니다.
위의 질문에 오타가 생겼습니다. 내가 쓰려고했던 첫 번째 쿼리는 ordertype <= 'ZAAA'또는 ordertype> = 'ZZZZ'입니다. – user3208146
게시 한 모든 사람들에게 감사드립니다. 쿼리를 다시 실행하고 첫 번째 쿼리에서 "OR"을 수정 한 후 결과가 동일합니다. 나는 오라클 문자 정렬이 예상대로 인식하지 못하는 이유에 대해 여전히 의문을 가지고 있지만 NOT BETWEEN과 <> 사이의 차이점에 대한 나의 질문은 거짓 경보입니다. – user3208146
이제'및'을'또는'로 변경 한 후에 두 문장 모두 실제로 동일한 레코드를 반환한다고 확신합니다. http://sqlfiddle.com/#!4/d8ac4/1을 실행하여 반환되는 레코드를 알려주십시오. 또한'select dump (ordertype) from table에서 ordertype이 'ZAAA'와 'ZZZZ'사이에 있지 않은 것을 선택하고 결과를 게시하십시오. –