작성
·
1.6K
1
이 문제를 풀 때 처음엔 where절 조건을
답변 1
0
안녕하세요
!= 가 조금 더 구체적으로 어느 상황에 사용 가능한건지,
-->
=, !=, <, > 와같은 표현들을 부등호라고 부르는데요, SQL에서는 데이터타입이 숫자 혹은 문자인 컬럼에 대한 값(Value)의 불일치 여부를 판단할 때 사용 가능합니다.
"11"와 같이 따옴표로 묶은 경우 비록 안에 들어있는 11이 숫자더라도 문자열로 표현된 11로 컴퓨터가 인식하게 되죠. 이러한 문자열에 대해 col != "11"을 작성하면.. 정확히 11인 값들만 필터링해주는 것이죠.
컬럼의 데이터타입이 숫자(int, float...)인 컬럼에 대한 필터링도 동일하게 적용됩니다. col != 11을 작성하게되면 11값만 제외하고 가져와 주는 것이죠. =나 !=, >, <, 같은 부등호들도 역시 적용이 가능합니다.
그리고 like라는 연산자를 사용할 땐 not like 가 유일한 작성 방법인건지 궁금합니다(유일합니다)
--> 하지만 문자열의 경우 반드시 일치, 불일치로만 모든게 해결되진 않습니다. 패턴 검색이 필요한 경우도 있어서 그렇죠. 가령 우리 강의의 문제에서 살펴보듯이.. S로 시작하는 나라이름의 회원들만! 과 같은 패턴 검색이 필요할 때가 있는데 이는 =나 !=와 같이 부등호로는 해결이 안되는 필터링이에요.
이 때 사용하는 것을 정규표현식(Regular Expression)이라고 부릅니다. SQL만이 아닌 대부분의 코딩언어에서 문자열의 패턴 검색을 하기 위해 사용되는 문법이에요. SQL에서도 이러한 패턴검색을 지원하기위해 나온 기능이 있는데 그게 like 연산자입니다. 그렇기 때문에 like 뒤에서는 단순히 "11"과 같은 문자만을 검색하는게 아닌 "S%"(S로 시작하는 모든 문자) 와 같은 패턴 검색 문법을 적용할 수 있는 것이에요.
그리고 이러한 연산자의 경우에는 부정표현을 하는 방식이 부등호와는 다르게 not을 붙여주게 됩니다. null값을 판단하기위한 is 연산자도 부정표현을 만들 때 where col is not null 과 같이 쓰고 다중 조건 필터링을 해주는 in을 사용할 때도 where col not in ("1", "2")와 같이 쓰게됩니다. 다만 is not null 처럼 가독성 때문에 not의 위치가 조금씩 다르게 쓰이기도 합니다.
처음 작성해주신 country != like 의 경우 부등호와 연산자가 동시에 쓰이다보니 컴퓨터가 인식을 못하고 syntax 에러를 만들게 되었을거에요. 좀 더 정확히는 != 뒤에는 숫자 혹은 문자가 올거라고 기대했을텐데 like라는 연산자가 오다보니 컴퓨터가 알고있는 규칙으로는 해석이 안됐던 거죠 :)
문자패턴검색에 대해 조금 더 자세히 알고 싶으실 때는 정규표현식(Regular Expression)을 키워드로 구글링을 해보시는 것도 좋을 것 같아요. 궁금증 풀리지 않은 부분 자유롭게 또 질문 주세요!