미성년이랑 아닌거랑 구분하는거는 의외로 쉬웠는데.. 나이대 구하는거는 삽질좀 했네..
막상 짜놓고 보니 -_- 이걸 왜 헤맸나.. 라는 생각도 들고...
역시 쿼리 짜는게 시간은 젤 잘가는듯...
미친 빠른 생일 때문에 -_- 짱나 죽는줄...
거기다가 900이랑 \'900\' 이랑 달라서..(어찌보면 당연한건데 깜박하고 있었음...)
계속 30대나 10대.. 이 값이 떠야 하는데 \'엄마젖 더 먹을 나이\' 가 떠서 빡침..
보니까 900 이랑 2000 이랑 숫자로 비교하면 900이 더 작은걸로 인식하지만
\'900\' 이랑 \'2000\' 이랑 문자형태로 비교하면 앞 숫자가 2이기 때문에 2000이 더 작게 판별되서
삽질한 거였음 ㅠㅜ
예전에도 이거때문에 빡쳤는데 또 삽질하다니...
문자열 비교와 숫자의 비교는 다르다는걸 뇌에 확실히 세겨야 할듯
이걸 더 줄일 수 있으면 좋을듯 한데 ㅠㅜ .. 너무 긴 쿼리가 된듯..
------------------------
SELECT CASE WHEN TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH<900
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH!=801
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH!=802 THEN \'엄마젖 더 먹을 나이\'
WHEN TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH=801
OR TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH=802
OR (TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH>900
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH<1900
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH!=1801
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH!=1802) THEN \'10대\'
WHEN TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH=1801
OR TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH=1802
OR (TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH>1900
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH<2900
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH!=2801
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH!=2802) THEN \'20대\'
WHEN TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH=2801
OR TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH=2802
OR (TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH>2900
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH<3900
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH!=3801
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH!=3802) THEN \'30대\'
ELSE \'40대 이상\'
END
FROM dual
막상 짜놓고 보니 -_- 이걸 왜 헤맸나.. 라는 생각도 들고...
역시 쿼리 짜는게 시간은 젤 잘가는듯...
미친 빠른 생일 때문에 -_- 짱나 죽는줄...
거기다가 900이랑 \'900\' 이랑 달라서..(어찌보면 당연한건데 깜박하고 있었음...)
계속 30대나 10대.. 이 값이 떠야 하는데 \'엄마젖 더 먹을 나이\' 가 떠서 빡침..
보니까 900 이랑 2000 이랑 숫자로 비교하면 900이 더 작은걸로 인식하지만
\'900\' 이랑 \'2000\' 이랑 문자형태로 비교하면 앞 숫자가 2이기 때문에 2000이 더 작게 판별되서
삽질한 거였음 ㅠㅜ
예전에도 이거때문에 빡쳤는데 또 삽질하다니...
문자열 비교와 숫자의 비교는 다르다는걸 뇌에 확실히 세겨야 할듯
이걸 더 줄일 수 있으면 좋을듯 한데 ㅠㅜ .. 너무 긴 쿼리가 된듯..
------------------------
SELECT CASE WHEN TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH<900
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH!=801
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH!=802 THEN \'엄마젖 더 먹을 나이\'
WHEN TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH=801
OR TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH=802
OR (TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH>900
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH<1900
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH!=1801
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH!=1802) THEN \'10대\'
WHEN TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH=1801
OR TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH=1802
OR (TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH>1900
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH<2900
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH!=2801
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH!=2802) THEN \'20대\'
WHEN TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH=2801
OR TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH=2802
OR (TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH>2900
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH<3900
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH!=3801
AND TO_CHAR(SYSDATE,\'yyyy\')-:YEAR||:MONTH!=3802) THEN \'30대\'
ELSE \'40대 이상\'
END
FROM dual
Master Of \"CASE\" syntax. from Oracle.
아아아아악ㄴㅇㄹㅇ너리낭멀ㅇ니ㅓㄹㅇ넌ㅇ런ㅇㅁㄹ ㅅㅂ 기껏 짜놨더니 mysql엔 지원 안되네... mysql엔 dual 테이블 지원 안해줘서 오라클에서 테스트하고 옮기려 했떠니 -_- 그래도 찾아보니까 to_char 랑 비슷한 펑션이 mysql에 있네... 아 짜증나 to_char도 없어 ㅠㅜ
DATE_FORMAT()
CONVERT()
FROM_UNIXTIME()
mysql 에서는 from 만 입력하면 oracle 의 from dual 과 동일하게 동작한데. 안해봐서 나도 몰라. 해보고 후기 올려줘.
FROM 입력하고 뒤에 테이블명 안해주니까 에러나 ㅠㅜ