숫자가 자동 증가하는 상품 코드 만들기
상품 코드를 보통 ITEM_001, ITEM_002 ... 이런식으로
문자열 + 증가하는 숫자 형식을 많이 사용한다.
데이터를 INSERT할 때, 자동으로 1씩 증가하는 상품코드를 만들어보자.
SUBSTR(ITEM_CODE, 6)
: ITEM_CODE 컬럼의 6번째 자리부터 잘라내서 가져온다.
그럼 001, 002 숫자만 추출되는데 이것이 문자로 반환되기 때문에
TO_NUMBER(SUBSTR(ITEM_CODE, 6))
: 숫자로 변환
MAX(TO_NUMBER(SUBSTR(ITEM_CODE, 6)))
: 증가하는 숫자를 만들어야 하기 때문에 현재 존재하는 컬럼의 가장 최대값을 추출
NVL(MAX(TO_NUMBER(SUBSTR(ITEM_CODE, 6))), 0)
: NULL일 경우 0으로 반환
NVL(MAX(TO_NUMBER(SUBSTR(ITEM_CODE, 6))), 0) + 1
증가하는 값이기 때문에 + 1
LPAD(NVL(MAX(TO_NUMBER(SUBSTR(ITEM_CODE, 6))), 0) + 1, 3, '0')
: 001, 002... 이렇게 3자리씩 빈 곳은 0으로 채우기
'ITEM_'||LPAD(NVL(MAX(TO_NUMBER(SUBSTR(ITEM_CODE, 6))), 0) + 1, 3, '0')
: 'ITEM_'와 || 연산자로 연결시켜주면 됩니다!
SELECT '넣을문자열_'||LPAD(NVL(MAX(TO_NUMBER(SUBSTR(컬럼명, 숫자시작자리))), 0) + 1, 3, '0') FROM 테이블