본문 바로가기

[개발] Programming/Database27

오라클 날짜(DATE) 비교, to_date, to_char 함수 오라클 날짜 타입 비교 오라클 쿼리를 작성하다 보면 날짜를 비교하는 케이스가 많이 발생합니다. 문제는 이 날짜 타입이 string인 경우와 date 타입인 경우가 있어서 형변환을 해줘야 된다는 것입니다. 왜냐하면 date 타입인 경우 string 타입과 직접 비교가 안되기 때문입니다. 1. string형 날짜 비교 날짜를 문자형 형태로 비교하기 위해서는 date 타입을 string으로 변환해줍니다. 오라클의 TO_CHAR() 함수를 이용하면 문자형으로 변환이 가능하죠. (* 12시간재로 비교할 경우 24를 12로 바꿔줍니다.) TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') 결과 > 20190731034515 예) 20190731 > 오늘 비교 1 2 3 4 SELECT DUMMY FR.. 2019. 7. 31.
ora-01843: not a valid month, 지정한 월이 부적합합니다. ora-01843 오류 : 오라클에서 위 오류는 날짜 포맷을 잘못 입력한 경우 발생. 영어로는 'not a valid month', 한글로는 '지정한 월이 부적합합니다.' 처음에는 월이 무슨 말인가 했는데, 생각해보니 月을 의미하고 있었습니다. 원인은 TO_DATE() 함수를 사용하는데 잘못된 데이터가 들어오고 있었기 때문입니다. 예를 들면 아래와 같은 경우 날짜가 형식에 맞지 않아 오류가 발생합니다. 1 2 3 SELECT TO_DATE('2190101', 'YYYY-MM-DD') AS DATE FROM TEST_TABLE ; Colored by Color Scripter cs 알고 보니 년도에 0이 하나 빠져있었습니다. '20190101'로 수정하면 더 이상 오류가 발생하지 않습니다. 1 2 3 SE.. 2019. 6. 1.
ora-01427: 단일 행 하위 질의에 2개 이상의 행이 리턴되었습니다. 오류 ora-01427 오류 오라클에서 하나의 값이 리턴되어야 하는데, 2개 이상의 값이 리턴되면 발생하는 오류. 몇 가지 케이스를 예로 들면, 1. 오라클 함수 null 체크를 할 수 있는 NVL() 함수를 사용할 때 리턴되는 값이 둘 이상이면 발생. 해결 방법은 하나의 값만 리턴하게 만드는 방법 밖에는 없다. 2. WHERE 조건 쿼리에서 WHERE에 비교하는 경우 '='을 사용하면 하나의 값만 비교가 가능함. 근데 만약 2개 이상의 값을 입력하는 경우 오류가 발생. 1 2 3 4 SELECT * FROM TEST_TABLE_A WHERE NAME = (SELECT NAME FROM TEST_TABLE_B) Colored by Color Scripter cs 이때 WHERE 조건에 있는 'SELECT NA.. 2019. 5. 28.
오라클 ORA-01722: 수치가 부적합합니다. ORA-01722: 수치가 부적합합니다. 해당 오류는 오라클에서 데이터 타입이 일치하지 않을 경우 발생합니다. 몇 가지 예를 들어보겠습니다. 1. 함수 결과 데이터 타입이 일치하지 않을 경우 1 2 3 SELECT DECODE(SUPPLY_PRICE, 'Y', 10000, 'Free') AS SUPPLY_PRICE FROM PRICE_TABLE ; Colored by Color Scripter cs 이 경우 결과 컬럼인 'SUPPLY_PRICE'는 Y/N에 따라 NUMBER 타입인 10000이 될 수도 있고, STRING 타입인 'Free'가 될 수 있습니다. 조건에 따라 NUMBER와 STRING 타입이 될수 있으므로 오류가 발생합니다. 문자인 'Free'를 0으로 수정하면 오류는 발생하지 않습니다. .. 2019. 5. 24.
오라클 SELECT 후 UPDATE 쿼리 오라클에서 SELECT와 UPDATE를 한 트렌젝션에 끝내는 방법이다. DB 트렌제션을 줄일 수 있어 효율이 좋은 문법이다. 예1) 테이블 AAA에서 COL1을 조회하여 BBB의 COL2를 업데이트하는 경우 1 2 3 4 5 6 UPDATE AAA SET COL1= ( SELECT COL2 FROM BBB WHERE 조건 ) WHERE 조건 ; cs * 주의사항 * 업데이트할 컬럼 COL1와 COL2는 동일한 속성의 칼럼이어야 한다. (컬럼의 데이터 타입, 사이즈 등) 예2) 테이블 AAA에서 COL1, COL2을 조회하여 BBB의 COL1, COL2를 업데이트하는 경우 1 2 3 4 5 6 UPDATE AAA SET COL1, COL2 = ( SELECT COL1, COL2 FROM BBB WHERE .. 2019. 4. 9.
오라클 SELECT 절에 문자 합치는 방법 쿼리를 작성하다보면 가끔 문자열을 조합하는 경우가 있습니다.그때 or 에 해당되는 || 를 사용하면 쉽게 해결할 수 있습니다. 구문 형태 SELECT 문자열 || 문자열 FROM DUAL; 예1) 결과: AB SELECT 'A' || 'B' FROM DUAL; 예2) 결과: Hello SELECT 'Hell' || 'o' FROM DUAL; 2019. 2. 21.