<selectKey resultType="String" keyProperty="resvId" order="BEFORE" >
SELECT 'RV'||replace(SYSDATE, '/', '')||'-'||(MAX(RSV) + 1)
FROM(
SELECT COUNT(*) AS RSV
FROM (
SELECT TO_NUMBER(SUBSTR(RESV_ID, 12)) AS RSVI
FROM RESV
WHERE SUBSTR(RESV_ID, -10, 8) = replace(SYSDATE, '/', '')
)
)
</selectKey>
셀렉트키로 위 내용을 찾는데, 결과는 RV20220826-1 이런식으로 나와야한다.
근데 자꾸 년도의 20이 지맘대로 생략돼서 나옴 ㅜㅜ
이유는 정확힌 모르겠지만 삽질하며 추측하건데.... FROM때문일까 싶다 왜냐면 FROM DUAL로 하면 잘됨... 아닌가? 그냥 replace 옆에 || 이러고 다른 문자 넣으면 그런거같기도하고 혀튼 이유를 모르겠다
그래서 해결하려고 여러 방법을 시도한 끝에 찾은 해결법은 SYSDATE를 replace로 형변환 해주지 말고 TO_CHAR의 형식을 이용해서 넣어주는것!!
<selectKey resultType="String" keyProperty="resvId" order="BEFORE" >
SELECT 'RV'||TO_CHAR(SYSDATE, 'YYYYMMDD')||'-'||(MAX(RSV) + 1)
FROM(
SELECT COUNT(*) AS RSV
FROM (
SELECT TO_NUMBER(SUBSTR(RESV_ID, 12)) AS RSVI
FROM RESV
WHERE SUBSTR(RESV_ID, -10, 8) = TO_CHAR(SYSDATE, 'YYYYMMDD')
)
)
</selectKey>
이렇게 원하는 형태를 TO_CHAR를 이용하여 넣어주니 정상적으로 출력되었다