SQL

LIKE/IN/BETWEEN/IS NULL

얆생 2023. 6. 20. 13:26

 

  • LIKE 활용, 데이터 속 문자열의 패턴 찾기

- LIKE 명령어 뒤에 문자열 조건 써주기

 

- %기호는 아무 문자나 들어가도 상관없다는 뜻이다, '와일드카드'라고도 불림

 

ex)  b% : b라는 문자로 시작하는 모든 데이터 검색

       %b : b라는 문자로 끝나는 모든 데이터 검색

       %b% : b라는 문자가 속해있는 모든 데이터 검색

 

SELECT *
FROM Customers
WHERE country LIKE '%r'

-- 또는

SELECT *
FROM Customers
WHERE country LIKE 'r%'

-- 또는

SELECT *
FROM Customers
WHERE country LIKE '%r%'

 

- 만약 찾고 싶은 키워드가 명확하다면. 즉, 패턴을 가지고 데이터를 불러오고 싶은게 아니라면 LIKE 말고 = 를 사용해주는게 속도면에서 더 빠르다(대용량 데이터를 다룰 경우에 차이가 명확하게 남)

 

SELECT *
FROM Customers
WHERE country = 'Brazil'

 

- _(언더바) 기호는 문자 1개의 자리임을 나타냄, _를 '한글자 와일드카드'라고도 함

 

 country 칼럼에서 B로 시작하고 뒤에 5글자가 더 있는 데이터를 출력해라

SELECT *
FROM Customers
WHERE country LIKE 'B_____'
-- B뒤에 _ 5개 써주기

 

- 만약 문자열 안에 있는 '%' 또는 '_'를 찾고 싶다면 이스케이프 문자를 활용하자

- 이스케이프 문자는 역슬래쉬 \ (원화 기호) >> MySQL 기

 

 discount 칼럼에서 할인을 50% 받는 사람을 출력해라

SELECT *
FROM Customers
WHERE discount LIKE '50\%'

 

 discount 칼럼에서 두 자릿수 할인을 받는 사람 데이터를 출력해라

SELECT *
FROM Customers
WHERE discount LIKE '__\%'
-- _ 언더바 2개, % 사이에 이스케이프 문자를 끼워서 검색

 

 

  • IN 활용

- 여러 속성값을 ( )로 묶어주기

 

 country가 Germany인 데이터, France인 데이터를 출력해라

SELECT *
FROM Customers
WHERE country IN ('Germany', 'France', ...)
-- WHERE country = 'Germany' OR 'France' OR ...

위 코드는 각주의 코드와 같지만, IN을 활용하면 더 간결하게 쓸 수 있다

 

 

  • BETWEEN 활용

 CustomerID가 3과 5를 포함하고 그 사이에 들어가는 값을 가지는 데이터를 출력해라

SELECT *
FROM Customers
WHERE CustomerID BETWEEN 3 AND 5
-- WHERE CustomerID >= 3 AND CustomerID <= 5

마찬가지로 위 코드는 각주의 코드와 동일하지만 BETWEEN을 활용하면 더 간결하게 쓸 수 있다

 

 

  • IS NULL로 결측치 검색하기
SELECT *
FROM Customers
WHERE CustomerID IS NULL
-- NULL, NaN (Not a Number)