본문 바로가기
반응형

IT/DB22

art1 [ORACLE] 오라클 LPAD, RPAD, TRIM, LTRIM, RTRIM (자리 수 채우기/지우기) * 오라클에서 데이터의 자리 수를 채우는 방법을 알아보자. * 업무를 하다보면 PK값 채번, 길이 맞춤 등의 이유로 값을 만들어야 할 일이 종종 있다. 1. LPAD / RPAD ( 채우기 ) SELECT -- LPAD( 값, 총길이, 채울값 ) LPAD( 1, 4, '0' ) -- 0001 , LPAD( 1, 5, '0' ) -- 00001 -- RPAD( 값, 총길이, 채울값 ) , RPAD( 1, 4, '0' ) -- 1000 , RPAD( 1, 5, '0' ) -- 10000 FROM DUAL 2. TRIM / LTRIM / RTRIM ( 공백 제거 ) SELECT -- TRIM( 문자열 ) TRIM( ' 공백 제거 ' ) -- '공백 제거' -- LTRIM( 문자열, 제거할값 ) LTRIM( '.. 2021. 10. 26.
art1 [ORACLE] 알아두면 유용한 오라클 딕셔너리 (Oracle Dictionary) * 아직 DB 파악이 덜 된 상태에서 업무를 하다보면 테이블이나 디비링크, 프로시져 유무 등 찾아보고 싶을 때가 많다. * 오라클 딕셔너리는 엄청나게 많지만 단순 업무 담당자 입장에서 자주 쓰게되는 것들만 알아두자. * 물론, 스키마 브라우저에서 다 찾아볼 수 있지만 조건을 걸어 찾거나 할 때 유용하다. * 아래 명령들은 모두 실행하는 USER가 접근 가능한 내용만 보여준다. ALL 1. ALL_TABLES * USER가 접근 가능한 모든 테이블 2. ALL_COL_COMMNETS * 모든 테이블, 뷰에 대한 컬럼 코멘트 3. ALL_DB_LINKS * 모든 디비링크 조회 4. ALL_OBJECTS * 모든 오브젝트에 대해 조회 * Function, Synonyms, Index 등 object_type으.. 2021. 9. 30.
art1 [ORACLE] MERGE문 사용법 * 머지도 진짜 안 쓰고 싶은데, 필요할 때가 있다. * MERGE문의 다양한 형태를 알아보자. 1. MERGE문 기본 형태 MERGE INTO 테이블 or 뷰 USING 테이블 or 뷰 or 서브쿼리 or DUAL ON join조건 or MATCH조건 -- TABLE명 제외(INTO 테이블 적용) -- ON에서 쓴 조건은 UPDATE 불가 WHEN MATCHED THEN 일치 SQL WHEN NOT MATCHED THEN 불일치 SQL 2. MERGE문 단일 테이블 ( DUAL ) MERGE INTO TABLE_A A USING DUAL -- 위 테이블과 같은 테이블 사용 ON ( COL1 = '2021' ) WHEN MATCHED THEN UPDATE -- 테이블명 넣지 않음. SET A.COL2 =.. 2021. 9. 28.
art1 [ORACLE] 프로시저(Procedure) 생성 및 실행과 작성 문법 (PL/SQL) * 안 쓰고 싶은데 특정 도메인에선 프로시저로 범벅이다. * 혹시 모르니 적어두자. 1. 프로시저 생성문 -- 생성문 시작 CREATE OR REPLACE PROCEDURE TEST_PROC ( -- 프로시저 실행 시 받을 매개변수는 CREATE 안에 작성 param1 IN NUMBER , param2 IN VARCHAR2 ) -- 프로시저에서 선언할 변수는 IS 뒤에 작성 IS param3 IN VARCHAR2(20) := "StudyingAzae"; -- 실행 내용은 BEGIN 뒤에 작성 BEGIN -- 단순 INSERT 문 INSERT INTO TEST_TABLE (NO, NAME, SITE) VALUE (param1, param2, param3) ; END TEST_PROC; 2. 실행 1) IN.. 2021. 9. 28.
art1 [ORACLE] 오라클 ROUND, TRUNC (소수점 반올림, 버림) * 오라클에서 소수점 반올림, 버림(절사) 하는 방법을 알아보자. * 업무를 하다보면 금액 계산 등의 이유로 계산 로직을 사용하면서 디비에서 값을 올리고 버리는 일이 종종 있다. 1. ROUND ( 반올림 ) SELECT ROUND( 123.567 ) -- 124 , ROUND( 123.567 , 0 ) -- 124 , ROUND( 123.567 , 1 ) -- 123.6 , ROUND( 123.111 , 1 ) -- 123.1 FROM DUAL 2. TRUNC ( 버림, 절사 ) SELECT TRUNC( 123.567 ) -- 123 , TRUNC( 123.567 , 0 ) -- 123 , TRUNC( 123.567 , 1 ) -- 123.5 FROM DUAL 2021. 9. 10.
art1 [ORACLE] 오라클 ORA-01489 에러 LISTAGG 길이 초과 시 해결 방법 * 오라클에서 LISTAGG 길이 초과 시 ON OVERFLOW TRUNCATE 절을 사용 가능하다. (Oracle 12c 이상) * LISTAGG 초과 건 표기 방법 변경 방법 * WM_CONCAT에선 SUBSTR을 사용하면 된다. * LISTAGG 쓰다가 ORA-01489: result of string concatenation is too long 에러날 때 참고하면 좋을 것 같다. 1. 중복 제거 후 붙이기 -- 중복제거 SELECT LISTAGG(DISTINCT 컬럼명, ',') FROM 테이블명 > COL1,COL2,COL3,COL4 --중복 제거 됨 2. 중복 제거 + 4000바이트 초과 건 생략 방법 -- 초과분 생략하기 SELECT LISTAGG(DISTINCT 컬럼명, ',' ON OV.. 2021. 8. 20.
art1 [ORACLE] 오라클 문자열 붙이기 / WM_CONCAT / LISTAGG * WM_CONCAT, LISTAGG, 문자열 연결, 컬럼 붙이기, 컬럼연결, 여러행합치기 * 10g~11g R1에서는 WM_CONCAT, 11g R2 이상부터는 LISTAGG 사용 (버전모르겠으면 그냥 다해보고 되는거 하면됩니다) * 모두 GROUP 함수이기 때문에 GROUP BY는 생략. 1. WM_CONCAT ( 10g ~ 11g R1 ) -- 문자열/컬럼내용 붙이기 SELECT WM_CONCAT(컬럼명) FROM 테이블명 > ROW1,ROW2,ROW3,ROW4,ROW4 -- 중복 제거하자 SELECT WM_CONCAT(DISTINCT 컬럼명) FROM 테이블명 > ROW1,ROW2,ROW3,ROW4 -- 예쁘게 정리하자 SELECT REPLACE(WM_CONCAT(DISTINCT 컬럼명), ','.. 2021. 8. 20.
art1 [ORACLE] 자주보는 오라클 에러 모음 / ORA-에러코드 모음 * 오라클 사용 시 발생할 수 있는 각종 ORA 에러들의 원인 및 해결방법을 참고할 수 있도록 작성. * 자주 보는 에러코드를 Ctrl+F로 찾을 수 있도록 정리. * 전체는 ORA 에러코드에 대한 정보는 아래 공식 URL 참고. https://docs.oracle.com/cd/B10501_01/server.920/a96525/e0.htm#ERRMG101 ORA-00000 to ORA-00899 docs.oracle.com 오라클 에러코드 모음 * ORA-00001 : 무결성 제약 조건에 위배됩니다. (PK 중복) - PK 채번 규칙 확인 - 쿼리 2번 실행 확인 - 송신 데이터 확인 * ORA-00600 : internal error code, arguments: [], [],[] (DB 내부 오류) .. 2021. 8. 20.
art1 [ORACLE] 오라클 테이블 컬럼 순서 변경 * 오라클 테이블 컬럼의 순서를 변경한다. * 오라클 12c 이상이면 쉬운데, 11g 이하면 꼭 해야 되는 거 아니면 안 하는 게 낫다. 1. 컬럼 순서 변경(오라클 12c 이상) * COL A, C, D, B 순서에서 A, B, C, D로 바꾸고 싶다. -- 초기 컬럼 순서 > COL [ A C D B ] -- 뒤로 보낼 컬럼을 우선 숨김 처리한다. ALTER TABLE 테이블명 MODIFY COL_C INVISIBLE; ALTER TABLE 테이블명 MODIFY COL_D INVISIBLE; > COL [ A B ] -- 다시 순서대로 보이도록 한다. ALTER TABLE 테이블명 MODIFY COL_C VISIBLE; ALTER TABLE 테이블명 MODIFY COL_D VISIBLE; > COL .. 2021. 8. 20.
art1 [ORACLE] 오라클 DDL ALTER 문(컬럼명/타입 변경,코멘트 추가,디폴트 추가,CLOB 변경) * 컬럼 추가/삭제, 데이터 타입 변경, 코멘트 변경 * ALTER문 일하다 보면 자주 쓰는데 정말 기억 안 나고 매번 찾기 귀찮다. 모아 두자. 1. 컬럼 추가/수정/삭제 -- 추가 ALTER TABLE 테이블명 ADD(컬럼명 VARCHAR2(100)); -- 수정(데이터 없을 시, 데이터 있을 경우는 아래 4_2번 SQL 참고) -- 디폴트값 N ALTER TABLE 테이블명 MODIFY(컬럼명 VARCHAR2(100) DEFAULT 'N'); -- 삭제 ALTER TABLE 테이블명 DROP COLUMN 컬럼명; 2. 컬럼 이름 변경 ALTER TABLE 테이블명 RENAME COLUMN 기존컬럼명 TO 변경컬럼명; 3. 테이블/컬럼 코멘트 수정 -- 테이블 코멘트 수정 COMMENT ON TABL.. 2021. 8. 20.