DB2 V8에서 LIKE문에 컬럼명이 들어갈 경우 오류가 발생합니다. 대처방안을 알려주세요 EX) SELECT GRP_CD FROM SYSTEM_GRP WHERE GRP_ETC LIKE '%' || GRP_mn || '%' 오류내용 : SQL0206N "GRP_MN"이(가) 사용된 컨텍스트에서 유효하지 않습니다. SQLSTATE=42703
SELECT GRP_CD FROM SYSTEM_GRP WHERE GRP_ETC LIKE '%' || 'GRP_mn' || '%' 요렇게 바꿔 보세요 ~
SELECT GRP_CD FROM SYSTEM_GRP WHERE GRP_ETC LIKE '%' || 'GRP_mn' || '%' 와 같이 쓸 경우 SELECT GRP_CD FROM SYSTEM_GRP WHERE GRP_ETC LIKE '%GRP_mn%'와 같은 쿼리문이 아닌가요? 검색하고자 하는 것은 Grp_mn의 필드값으로 검색하고자 합니다.
LIKE 술어 >>-match-expression--+-----+--LIKE--pattern-expression----------> '-NOT-' >--+---------------------------+------------------------------->< '-ESCAPE--escape-expression-' pattern-expression 일치시킬 문자열을 지정하는 표현식 표현식은 다음에서 지정될 수 있습니다. 1) 상수 2) 특수 레지스터 3) 호스트 변수 4) 피연산자가 위의 사항 중 하나인 스칼라 함수 5) 위의 사항 중 하나를 병합한 표현식 http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/admin/r0000751.htm 에서 참조한 내용으로 컬럼은 문법상 LIKE절에 사용될 수 없습니다. 굳이 사용을 하셔야 하는 경우라면 호스트 변수를 이용하는 것과 자바같은 어플리케이션에서 바인드변수 처리로 App에서 LIKE문 뒤에 '%ABC%' 같은 표현식을 미리 생성하여 DB에 전달해줘야 합니다. 마지막 방법은 LOCATE를 이용하는 방법인데 결과는 원하시는대로 나올수 있으나 성능은 장담하지 못합니다. Ex) SELECT GRP_CD FROM SYSTEM_GRP AS X WHERE LOCATE(X.GRP_mn,X.GRP_ETC) >= 1; *) LOCATE는 Info Center에서 참조하시기 바랍니다.