Database/SQL32 [Oracle] TRUNC 함수 사용방법 (날짜, 시간, 요일, 숫자) [Oracle] TRUNC 함수 사용방법 (날짜, 시간, 요일, 숫자) TRUNC("값", "옵션") TRUNC 함수는 오라클의 기본적인 함수로 주로 소수점 절사나 날짜의 시간을 없앨 때 사용한다. TRUNC(숫자) 위와 같이 TRUNC를 숫자에 적용하는 경우 소수점을 모두 절사한다. SELECT TRUNC(NUM, 1)-- NUM = 1234.56 FROM TEMP 이는 소수점 자리 1 (옵션 값)까지 절사, 즉 자르라는 의미이다. ROUND와 같이 반올림을 해주지 않고 지정한 자릿수 이후로 자른다. TRUNC(날짜) 옵션이 없는 경우 기본적으로 시간을 절사하며, 옵션을 입력한 경우 입력한 부분까지 표출하고 그 나머지를 "00"으로 초기화한다. 시간 절사 SELECT TRUNC(DT, 'DD')-- 시.. Database/SQL 2021. 11. 10. [ORACLE] 집계함수의 SUMMARY 구하기 - ROLLUP 함수 [ORACLE] 집계함수의 SUMMARY 구하기 - ROLLUP 함수 CR_DTM, CR_TYPE 그룹으로 갯수(CNT) 관련컬럼은 합(SUM)을 비율(RATE) 관련컬럼은 평균(AVG)를 나타내려고 한다. 단계 1. 집계 함수 (SUM, AVG) SELECT CR_DTM , CR_TYPE , SUM(TOTAL_CNT) AS TOTAL_CNT , SUM(MINUTE1_CNT) AS MINUTE1_CNT , AVG(MINUTE1_RATE) AS MINUTE1_RATE , SUM(MINUTE2_CNT) AS MINUTE2_CNT , AVG(MINUTE2_RATE) AS MINUTE2_RATE , SUM(MINUTE3_CNT) AS MINUTE3_CNT , AVG(MINUTE3_RATE) AS MINUTE3_.. Database/SQL 2021. 10. 28. [Oracle] "ORA-06502: PL/SQL: 수치 또는 값 오류: 문자열 버퍼가 너무 작습니다" 오류 해결 [Oracle] "ORA-06502: PL/SQL: 수치 또는 값 오류: 문자열 버퍼가 너무 작습니다" 오류 해결 CLOB 타입의 데이터를 조회하는 과정에 발생한 오류이다. 전자정부 프레임워크 SpringMVC 모델의 프로젝트의 MyBatis 를 사용하여 DB 데이터를 조회한 쿼리를 VO 객체에 담아 View에 보내는 과정이었다. CLOB 타입의 데이터를 VO에 담기 위해서는 다음과 같은 쿼리를 작성했다. SELECT SEQ_NO , SUBJECT , DBMS_LOB.SUBSTR(CONTENTS_CLOB, 4000, 1) AS CONTENTS FROM WEB_OP_BBS CONTENTS_CLOB 컬럼의 컨텐츠를 지정 바이트 (4000) 만큼 잘라오는 쿼리이다. 실제로 CONTENTS_CLOB 에 이미지 .. Database/SQL 2021. 4. 30. [MySQL] 현재 날짜와의 차이 계산하기 : 일 차, 주 차, 월 차 [MySQL] 현재 날짜와의 차이 계산하기 : 일 차, 주 차, 월 차 1. 현재 날짜와 특정 날짜의 차이 값 계산하기 TIMESTAMPDIFF(옵션, 날짜1, 날짜2) 옵션 DAY, WEEK, MONTH 기준으로 일 차, 주 차, 월 차 값을 반환한다. 날짜1이 날짜2 보다 과거인 경우 양수 값으로 반환된다. 일 차이 TIMESTAMPDIFF(DAY, 특정날짜, CURDATE( )) 주 차이 TIMESTAMPDIFF(WEEK, 특정날짜, CURDATE( )) 월 차이 TIMESTAMPDIFF(MONTH, 특정날짜, CURDATE( )) 예시 TEST_TABLE에 STST_DATE 컬럼은 20년 10월부터 21년 1월까지 DATE 타입의 특정 날짜가 있다. 해당 특정 날짜와, 현재 날짜, 그리고 두 날짜.. Database/SQL 2021. 1. 26. [Oracle] 행열 변환, 오라클 PIVOT 테이블 사용 방법 [Oracle] 행열 변환, 오라클 PIVOT 테이블 사용 방법 PIVOT 테이블은 행/열을 바꾸거나 통계처리할 때 대체로 사용된다. 사용 구문 SELECT ... FROM ... PIVOT [XML] ( --------------(1) PIVOT_CLAUSE --------------(2) PIVOT_FOR_CLAUSE --------------(3) PIVOT_IN_CLAUSE --------------(4) ) WHERE ... ① PIVOT : PIVOT 테이블, [XML]을 정의할 경우 필터링된 PIVOT 값이 XML 타입으로 반환된다. ② PIVOT_CLAUSE : 집계함수 (SUM, MAX, MIN, COUNT 등)와 같은 컬럼을 정의한다. ③ PIVOT_FOR_CLAUSE : PIVOT의 .. Database/SQL 2021. 1. 13. [MySQL] 원하는 구분자 기준으로 문자열 자르기 : SUBSTRING_INDEX [MySQL] 원하는 구분자 기준으로 문자열 자르기 : SUBSTRING_INDEX SUBSTRING_INDEX 구문 SUBSTRING_INDEX(문자열, 구분자, 구분자 인덱스) 예제 다음 예제 테이블에서 실제 파일명만 가져오기 위해 "/" 구분자로 문자열을 가져온다. 1. 첫 번째 구분자로 나뉜 문자열 가져오기 SELECT SUBSTRING_INDEX(FILE_NM, '/', 1) AS FILE_NM FROM TEST_TABLE 2. 세 번째 구분자로 나뉜 문자열 가져오기 SELECT SUBSTRING_INDEX(FILE_NM, '/', 3) AS FILE_NM FROM TEST_TABLE 3. 뒤에서 첫 번째 구분자로 나뉜 문자열 가져오기 SELECT SUBSTRING_INDEX(FILE_NM, '.. Database/SQL 2020. 11. 6. [HeidiSQL] HeidisSQL 에서 조회한 데이터 엑셀 내보내기 [HeidiSQL] HeidisSQL 에서 조회한 데이터 엑셀 내보내기 ORACLE에서는 조회한 데이터 드래그 복사가 가능한데 mySql은 안된다.. 01. 조회한 데이터 테이블에서 [마우스 우키] - [격자 행 내보내기] 클릭 02. '격자 행 내보내기' 폼에서 출력 파일 형식(엑셀) 설정 후 파일 저장 위치 설정 끝~ Database/SQL 2020. 7. 23. [Oracle] 숫자 0.5 문자 변환 시 ".5" ? "0.5" 로 표시하기 [Oracle] 숫자 0.5 문자 변환 시 ".5" ? "0.5" 로 표시하기 TO_CHAR를 사용하여 숫자인 0.5를 문자로 변환하면 ".5"로 소수점 이상이 0일 경우 점(.)으로만 표시되어 변한된다. FM (FORMAT) 옵션을 활용하여 변환할 수치 값의 포맷을 설정해보자. - FM9990.99 ① 9 : 해당 자리의 숫자를 의미한다. - 값이 없을 경우 소수점 이상은 공백, 소수점 이하는 0으로 표시한다. ② 0 : 해당 자리의 숫자를 의미한다. - 값이 없을 경우 0으로 표시하며 숫자의 길이를 고정적으로 표시할 때 주로 사용한다. ③ FM : 좌우 9로 치환된 소수점 이상의 공백 및 소수점 이하의 0을 제거한다. - 예제 SELECT TO_CHAR(0.50, 'FM9990.99') FROM SY.. Database/SQL 2020. 6. 20. [Oracle] 자동증가 SEQUENCE 생성, 조회, 삭제 [Oracle] 자동증가 SEQUENCE 생성, 조회, 삭제 SEQ값을 키 값으로 가지고 있는 테이블을 저장할 때 MAX(SEQ)+1로 데이터를 저장하게되면 데이터가 쌓일수록 과부하가 걸린다. 따라서 시퀀스를 생성하여 시퀀스의 자동증가를 활용하여 저장할 수 있도록 해보자. 1. SEQUENCE 생성 - 내가 원하는 시퀀스 명칭을 정의하여 생성한다. CREATE SEQUENCE TEST_SEQ START WITH 1 INCREMENT BY 1; 2. SEQUENCE 전체 조회 - 내가 생성한 SEQUENCE에 대한 전체 정보를 조회한다. TEST_SEQ가 생성된 것을 확인할 수 있다. SELECT * FROM USER_SEQUENCES; 3. 특정 SEQUENCE의 다음 값 조회 : NEXTVAL - SE.. Database/SQL 2020. 4. 8. [Oracle] LPAD, RPAD 함수 사용하여 공백 채우기 "0 채우기" [Oracle] LPAD, RPAD 함수 사용하여 공백 채우기 "0 채우기" 데이터베이스에서 키 값을 자동으로 저장할 때, SEQ는 SEQUENCE를 사용해서 자동증가가 쉽지만 숫자형 문자인 CD00001 과 같은 포맷의 키 값을 1씩 늘려가며 저장할 때 CD를 자르고, MAX값으로 +1을 하여 다시 0을 붙여서 저장해야만 하는가.. 찾아보다가 LPAD/RPAD 함수를 만나게 되었다. 이를 더 쉽게 해줄 함수를 공부해보자. LPAD 함수 LPAD("값", "총 문자길이", "채움문자") - 지정한 길이만큼 왼쪽부터 특정문자로 채워준다. SELECT 30 , LPAD(30, 5) , LPAD(30, 5, '0') , LPAD(30, 5, 'A') FROM SYS.DUAL - 결과 채움문자 수= "총 문자길.. Database/SQL 2020. 4. 3. [Oracle] ORA-00904 : 부적합한 식별자 invalid identifier 오류 ORA-00904 : 부적합한 식별자 invalid identifier 오류 ORA-00904 : 부적합한 식별자 invalid identifier 오류는 입력된 열 이름이 누락되었거나 잘못 되었을 경우 발생한다. 원인 존재하지 않는 열 이름을 지정한 경우 정의된 열 이름과 대소문자가 일치하지 않는 경우 작은 따옴표(')와 큰 따옴표(") 사용 방법의 오류인 경우 열 이름에 특수 문자 사용한 경우 열 이름에 Oracle 예약어 사용한 경우 각 원인 별 해결방법 존재하지 않는 열 이름을 지정한 경우 해당 열이 테이블에 존재하는지 확인 정의된 열 이름과 대소문자가 일치하지 않는 경우 정의된 열 이름의 대소문자를 확인 작은 따옴표(')와 큰 따옴표(") 사용 방법의 오류인 경우 작은 따옴표(')로 값을 묶으면.. Database/SQL 2020. 2. 17. [Oracle] ORA-00054 : 리소스가 사용 중이어서 NOWAIT가 지정되었거나 시간 초과가 만료된 상태로 획득합니다. 오류 [Oracle] ORA-00054 : 리소스가 사용 중이어서 NOWAIT가 지정되었거나 시간 초과가 만료된 상태로 획득합니다. 오류 ORA-00054 : 리소스가 사용 중이어서 NOWAIT가 지정되었거나 시간 초과가 만료된 상태로 획득합니다. 00054. 00000 - "resource busy and acquire with NOWAIT specified" 위 오류는 내가 사용하려는 테이블을 다수의 사용자가 하나의 DB로 작업하다가 주로 lock이 걸리는 경우 발생한다. 이 때는 선행 사용자가 commit을 해주면 간단히 해결된다. 혹은 오류 메시지가 뜨진 않고, 테이블 조회는 가능하지만 INSERT, MERGE 혹은 DELETE를 하려는 경우에 쿼리가 실행되지 않고(나의 경우) 멈춘다면 lock이 걸려.. Database/SQL 2020. 2. 17. 이전 1 2 3 다음 728x90 반응형