본문 바로가기

파이썬으로 퀀트 프로그램 만들기 project/MySQL

MySQL - like 술어, 문자열 일치, between 술어, isnull, in 술어

728x90

#like

문자열을 검색할때 등호(=)를 사용할 수 있습니다. 그러나 이것은 완전히 일치하는 경우에만 참이 됩니다.

반면에 like술어는 문자열 중 부분 일치를 검색할 때 사용할 수 있습니다.

 

 

#일치의 종류

전방일치 - 검색 조건이 되는 문자열이 검색 대상 문자열의 가장 앞에 위치하고 있는 행을 선택

중간일치 - 검색 조건이 되는 문자열이 검색 대상 문자열의 어딘가에 포함되어 있으면

행을 검색하며 위치는 어디는 상관없음

후방일치 - 검색조건이 되는 무자열이 검색 대상 문자열의 가장 뒤에 위치하고 있는 행을 검색

 

전방일치 예시

select * from nameoftable where col_1 like 'ddd%';

→ 'nameoftable'에서 'col_1'열에서 'ddd'로 시작되는 모든 문자열 데이터를 찾습니다. 

%는 '0문자 이상의 임의의 문자열'을 의미하는 특수기호를 뜻합니다.

 

중간일치 예시

select * from nameoftable where col_1 like '%ddd%';

 

후방일치 예시

select * from nameoftable where col_1 like '%ddd';

 

 

#between

between은 범위 검색을 수행합니다.

사용 예시

 select * from nameoftable where col_2 between 100 and 1000;

→ 'nameoftable' 테이블에서 'col_2'가 100부터 1000까지인 데이터를 선택

 

 

 

#isnull

테이블에서 null이 포함된 데이터를 찾고 싶을 때 단순하게 생각하면

select * from nameoftable where col_1 = null; 

이렇게 하면 되지 않을까 싶다. 그러나 null은 비교 불가능한 특별한 표시어이기 때문에 isnull을 사용해야 합니다.

 

사용 예시

select * from nameoftable where col_2 is null;

 

반대로 null이 아닌 것만 찾고 싶을 때는 다음과 같이 is not null을 작성해줍니다.

select * from nameoftable where col_2 is not null;

 

 

#in

만약에 예를 들어서 col_1이 300, 500, 700인 데이터를 선택할 때 or 구문을 사용하면 다음과 같이 된다.

select * from nameoftable where col_1 = 300 or col_1 = 500 or col_1 = 700;

이러한 나열식의 쿼리는 조건이 많아질수록 길어지고 효율이 떨어진다.  이때 'in' 술어를 사용하면 된다.

 

사용 예시

select * from nameoftable where col_1 in (300, 500, 700);