본문 바로가기
  • Pozip's House
Sql

Sql - 4 특수연산자

by 포집 2023. 8. 22.

특수연산자는 SQL에서만 사용하는 특수연산자이다.

 

LIKE, BETWEEN, IN이 있으며

 

LIKE는 '유사한 결과도 사용자에게 전달해줄게' 라는 느낌이다.

또는 '유사한 유형도 전달해줄수있어' 느낌이다. 

보통 LIKE는 %랑 함께 사용된다.

예시로 A라는것을 찾기위해 %을 A앞에 두면 어떠한 결과가 나오든간에 A로끝내야한다. 

반대로 %가 A뒤에 있다면 A로 시작되는 어떠한 내용이라도 다 보여줘 라는 뜻이된다.

%가 A양쪽에 존재하게되면 앞이든 뒤에든 상관없이 A가 포함된 결과는 나에게 전달해줘 라는 뜻이 된다.

LIKE는 반드시 문자유형에만 사용이 가능하다. 숫자유형에는 사용이 불가하다.

 

[Sales].[Store]테이블을 예시로 들어보겠다.

일단 [Sales].[Store]테이블을 불러와서 확인해보자

SELECT*FROM [Sales].[Store]

로 왼쪽아래를 보면 총 701개행이 나온것을 확인할수 있다.

Name이 BIKE인것을 먼저 찾아보자.

SELECT*FROM [Sales].[Store] WHERE Name='BIKE'

결과가 안나오는것을 볼수있다. 이름이 BIKE은 없는것같다. 그럼 BIKE가 들어가있는 이름을 찾아보자.

SELECT*FROM [Sales].[Store] WHERE Name LIKE '%BIKE%'

%을 앞뒤에 붙힘으로써 BIKE가 포함되어있으면 전부 보여달라고 명령어를 실행했다.

총 182개의 행이 나온것을 볼수있다. 그렇담 이름이 BIKE로 시작된것은 있을까?

SELECT*FROM [Sales].[Store] WHERE Name LIKE 'BIKE%'

13개의 행이 나온것을 확인할수있다. 이름이 어떻게 되던 끝이 BIKE인 이름은 있을까?

SELECT*FROM [Sales].[Store] WHERE Name LIKE '%BIKE'

결과가 안나오는것을보니 없는것같다. 이렇게 LIKE는 앞뒤에 %을 표시함으로써 문자열을 검색하는 방식이된다.

 

 

다음으로 BETWEEN은 사용법이

WHERE FEILD BETWEEN '조건1' AND '조건2' 로 보통 사용이된다.

특정한 필드의값이 조건1과 조건2사이의 해당되는 값을 나에게 출력해달라는 뜻이다.

예시로 A>= 100 and A<= 300 은

100보다 크거나 같고 300보다 작거나 같은 A결과를 출력해달라는 뜻이다.

BETWEEN A 100 and 300 으로 명령어 작성해주면된다.

 

SELECT*FROM [Production].[Product]

테이블을 먼저 확인해보면

로 꽤 많은 양의 데이터가 나온다. 여기서 ListPrice가 1000이상인 데이터를 살펴보자.

SELECT*FROM [Production].[Product] WHERE ListPrice >=1000

86개의 행이 나온것을 확인할수있다. AND를 통해서 1000이상 3000이하인 데이터를 살펴보자

SELECT*FROM [Production].[Product] WHERE ListPrice >=1000 AND ListPrice<=3000

데이터가 73개로 줄어든것을 볼수있다. 이것을 BETWEEN을 이용하게되면

SELECT*FROM [Production].[Product] WHERE ListPrice BETWEEN 1000 AND 3000

로 작성이되며 결과값은

로 똑같이 나온것을 볼수있다.

 

 

다음으로 IN은 하나의값을 처리하는게 아니라 두개, 복수의값을 처리하는 연산자이다.

WHERE A=100 OR A=200 OR A=300을

WHERE A IN (100,200,300) 으로 간편하게 표현이 가능하다.

OR을 전부다 대체할수있냐? 그건 아닐수도있다. 하지만 논리연산자인 OR을 대체해서 좀더 유연하게 표현할수는 있는 부분이다.

IN은 특별한 부분이 있다. A값이 100,200,300이 아닌값도 출력원할땐 A NOT IN (100,200,300)을 사용하게되면 가로안에 있는 조건이 포함되지않는 결과가 나온다.

 

다시 [Sales].[Store]테이블을 통해 확인해보겠다.

SELECT*FROM [Sales].[Store]

총 701개의 데이터들중에 SalesPersonID가 279인 데이터부터 확인해보겠다.

SELECT*FROM [Sales].[Store] WHERE SalesPersonID = 279

80개의 데이터가 나왔다. 다음으로 OR을 통해 SalesPersonID가 279,275,283인 데이터를 확인해보겠다.

SELECT*FROM [Sales].[Store] WHERE SalesPersonID = 279 OR SalesPersonID = 275 OR SalesPersonID = 283

195개의 데이터값이 나왔다. 이를 표현하기 편하게 IN을 이용하게되면

SELECT*FROM [Sales].[Store] WHERE SalesPersonID IN (279,275,283)

로 사용하게되며 결과값은

같은값이 나온것을 볼수있다. 반대로 279,275,283이 안들어간 데이터를 보고싶으면

SELECT*FROM [Sales].[Store] WHERE SalesPersonID NOT IN (279,275,283)

로 506개의 결과가 나온것을 확인할수있다.

'Sql' 카테고리의 다른 글

Sql - 5 함수-1  (0) 2023.08.22
Sql - 3 비교연산자,논리연산자  (0) 2023.08.21
Sql - 2  (0) 2023.08.18
Sql - 1.5  (0) 2023.08.18
SQL -1  (0) 2023.08.18