SQL 조회용 검색 쿼리

황제낙엽 2019.05.28 05:43 조회 수 : 141

DESCRIPTION 과 REMARK 컬럼에서 style 이라는 단어가 들어가 있는지 조회한다

 

SELECT * FROM [XXX].[XXX].[XXX] AS RPH

WHERE

    RPH.DESCRIPTION LIKE '%style%' OR

    RPH.REMARK LIKE '%style%'

 

유의할 점은 위와 같이 영문을 조회할 경우 대소문자 구분없이 추출하기도 하므로 컬럼의 속성을 확인하는게 좋다

 

컬럼의 속성에 상관없이 대소문자를 무조건 구분하여 검색하려면

where 절의 컬럼조건에 collate Korean_Wansung_BIN 을 붙여 주면 된다.

select * from #user_info where user_id = 'bbb' collate Korean_Wansung_BIN

 

주의할 사항은 where 절의 컬럼이 2개 이상일경우 각 컬럼별로 collate Korean_Wansung_BIN 를 지정해 주어야 한다.

select * from #user_info where user_id = 'bbb' collate Korean_Wansung_BIN and user_nm = '테스트1' collate Korean_Wansung_BIN

 

 

추가로 테이블 생성시부터 대소문자가 비교되도록 옵션 지정이 가능하다

MS SQL Server 에서 기본적으로 레코드을 비교할때 대소문자를 비교하지 않는다고 한다.

설치시 옵션으로 하지 않으면 대소문자 구분을 하지 않는다고 하고

버전 7.0 같은 경우엔 대소문자 구분없이 설치하였다가 이를 지원할려면 새로 설치하는 방법밖에 없다고 한다. 

그러나 MS SQL Server 2000 에서는 테이블을 생성할때 옵션으로 지정할수 있다고 한다.

 

테이블 생성이 아래와 같이 'COLLATE Korean_Wansung_CS_AS_WS' 를 지정하면 된다.

 

create table aaa (

col1 varchar(50) COLLATE Korean_Wansung_CS_AS_WS NULL ,

col2 char(10) not null )

 

혹시 이와 같이 생성을 하지 않았다고 하더라도

쿼리문에서 같은 방법으로 조치할 수 있다고 한다.

 

select * from aaa where col1 COLLATE Korean_Wansung_CS_AS_WS = '조건'

 

그렇지만 쿼리문으로 하는것보단 필요한 곳은 테이블 생성할때 대소문자 구분을 하는것이 좋을것이라 판단한다.