'DATABASE'에 해당되는 글 12건

  1. 2011.07.13 [MSSQL] Like문 검색시 대괄호 문제점 2
검색 쿼리에 너무나도 많이 사용되는 
select * from ...where [컬럼명] like '검색어%' 구문 ..

어느날 후배한명이 질문을 했다.
선배님 ! like 구문이 안먹히는데요..

구문은 게시판 제목에 [포토] 라는 글자로 시작하는 글을 찾아내는것이었다
당연히 예상된 구문은
select * from 게시판테이블 where 게시판제목 like '[포토]%'

실행 !!! 어라?  데이터가 한건도 없네~  

귀신이 곡할 노릇이구만 분명 [포토] 로 시작하는 글은 엄청 많이 존재하는데 말이다.
간만에 온라인설명서를 열어본다 그것도 기본적인 like 구문을 말이다

와일드카드 문자 !!!!! 이것이 해답이었다 
밑줄 사용은 많이 하는데 정녕 like 구문에 대괄호 사용은 모르고 있었구나...이 유용한것을.. 


- 온라인설명서 -

와일드카드 문자설명예제
% 문자가 0개 이상인 문자열 WHERE title LIKE '%computer%'는 책 제목에 'computer' 단어가 있는 모든 책 제목을 찾습니다.
_ (밑줄) 단일 문자 WHERE au_fname LIKE '_ean'은 ean으로 끝나는 모든 4문자 이름을 찾습니다(Dean, Sean 등).
[ ] 지정된 범위([a-f]) 또는 집합([abcdef])에 있는 단일 문자 WHERE au_lname LIKE '[C-P]arsen'은 arsen으로 끝나고 C와 P 사이의 단일 문자로 시작하는 저자의 성을 찾습니다. 예를 들면, Carsen, Larsen, Karsen 등입니다.
[^] 지정된 범위([^a-f]) 또는 집합([^abcdef])에 없는 단일 문자 WHERE au_lname LIKE 'de[^l]%'은 de로 시작하고 그 다음에 오는 문자가 l이 아닌 저자의 성을 모두 찾습니다.


즉, 대괄호에 해당되는 구문은 like 검색의 와일드카드 문자로 사용되기 때문에 
인식이 되지 않는것이다.

하지만 !! 나는 정말 대괄호로 시작하는 데이터를 뽑아내고 말테닷 !! 
라고 하시는 분들은 위 설명서를 잘 보면 해답이 보인다. 

바로 와일드카드 [] 를 이용하는것이다
[] 사이에 검색하고픈 대괄호를 넣고 구문을 만든다 

select * from 게시판테이블 where 게시판제목 like '[[]포토]%' 
 
즉. 대괄호를 지정범위로 두면서 뒤에 `포토`라는 단어가 따라오는 데이터를 찾게되는것이다
이로서 원하는 대괄호 like 검색은 해결된다 !!! 
Posted by 스왓