by 킹오 [Oracle 기초] [2020.07.20 21:27:06]
SELECT IFNULL(LPAD(MAX(CAST(APPLE AS UNSIGNED)) +1, 3, '0'), '001') AS MANGO FROM TABLE
이러한 mysql 쿼리가 있는데 이를 오라클로 변환하려 합니다.
계속 우괄호가 없다는 에러가 출력되어 질문 올립니다
IFNULL을 NVL로 바꾸고, UNSIGNED를 UNSIGNED INTEGER로 바꿔봤는데 같은ㅇ ㅔ러가 발생합니다
컬럼 APPLE의 데이터 타입은 오라클 기준 VARCHAR2(30) 입니다
오라클은 unsigned integer 라는 타입이 없어서 integer나 number로 사용하셔야 할듯합니다.
해당 항목이 이미 앞쪽에 '0' 을 채운 고정자리수 형태라면? '001' 굳이 숫자로 바꾸어 MAX 하지 않아도 됩니다. 굳이 숫자로 바꾸어 MAX 하면 성능이 저하됩니다. 숫자 변환 없이 바로 MAX 한 뒤 숫자로 변환하세요.
LPAD(NVL(MAX(apple) + 1, 1), 3, '0') mango
답이 늦어 죄송합니다 확인하고 해결 잘 하였습니다 감사드립니다!