아래 첫번째 쿼리는 문제없이 돌아가는데,
두번째 쿼리처럼 substr안에 컬럼명을 주면 아래처럼 에러가 납니다.
like 뒤에 string이 오지 않아서 그렇다는 것 같은데 세번째처럼 cast를 해줘도 마찬가지에요. 왜 그럴까요?
YYMMDD와 YYMMDD2 두 컬럼 모두 char(8) 타입입니다.
------------------------------------------------------------------------------
select * FROM TABLE_A
WHERE YYMMDD LIKE SUBSTR('20120509', 1, 6)||'%'; -> 정상
select * FROM TABLE_A
WHERE YYMMDD LIKE SUBSTR(YYMMDD2, 1, 6)||'%'; -> 오류
select * FROM TABLE_A
WHERE YYMMDD LIKE CAST(SUBSTR(YYMMDD2, 1, 6)||'%' AS char(6)); -> 오류
------------------------------------------------------------------------------
DB2 Database Error: ERROR [42824] [IBM][DB2/AIX64] SQL0132N A LIKE predicate or POSSTR scalar function is not valid because the first operand is not a string expression or the second operand is not a string. A LOCATE or POSITION scalar function is not valid because the first operand is not a string or the second operand is not a string expression. SQLSTATE=42824
|