데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
안녕하세요 ^^
음...현재 프러시저 개발중인대
테이블에 특정 문자를 넣어두고 그 문자와 비슷한것 like문으로 찾아서 있으면 return 하는 것입니다.
그런대 그 문자중에 간혹 중간에 [ <<가 있습니다. 이것을 특수문자로 인식해서 비교를 못하더군요..
REPLACE 함수는 특정 값을 찾는것이지 불특정 다수의 값을 찾는것이 아닌것으로 알고있는대요.
SUBSTRING(NM_EVENTVWR_DESC,CHARINDEX('] ',NM_EVENTVWR_DESC),600)AS NM_EVENTVWR_DESC
현재 제가 구현한 것입니다.
보면 SUBSTRING이 들어가는대 이것은 앞 부분에 날짜까지 같이 찍히기 때문에 그룹핑 해줄수가 없으므로
날짜를 날려버리고 완전히 같은 문장을 찾기 위함입니다.
그런대 QueryBalance::Result[test2][0][0][0][0][0] 이러한 문장을 검사할 경우에 [] 때문에 읽지를 못합니다....
방법이 없을까요? 무조건 문자로 읽게 하려고 합니다.
nvarchar로도 물론 변경해봤습니다....
질문의 요지는 LIKE 검색할때에 '['를 못찾는다는거죠?
%, _, [, ] 등은 LIKE 검색이 잘 안될겁니다.
왜냐면 저 문자들은 LIKE검색에서 특수한 용도로 사용되기 때문이죠.
BOL의 LIKE(Transact-SQL) 페이지에 자세히 설명되어 있습니다.
%는 여러문자 _는 한문자에 대응하는 와일드 카드라는건 아실테고
대괄호는 %나 _를 와일드 카드가 아닌 문자자체로 인식하게 하기도 하고
WHERE COL1 LIKE '5[%]' 이렇게 하면 5%라는 문자열을 검색하게 됩니다.
또 범위를 나타내기도 하죠
WHERE COL1 LIKE '[A-C]%' 이러면 맨 앞글자가 A~C로 시작하는걸 검색하게 되죠.
그래서 WHERE 절에서 대괄호를 쓰면 대괄호 자체를 검색하지는 않습니다.
만약 대괄호 자체를 검색하려면 ESCAPE라는걸 쓰면 되는데요. (전 그냥 대괄호를 입력 못하게 합니다. -_-)
WHERE comment LIKE '%30!%%' ESCAPE '!'
이런식인데요 '!' 뒤에 있는 한 문자는 와일드카드가 아니고 그냥 문자다!!!!!!! 이런 뜻이죠.
그래서 해석을 해보면 30%라는 문자열이 있는 행을 반환하게 됩니다.