oracle12 [Oracle] 3자리 콤마찍기 오라클에서 숫자 3자리 마다 콤마 찍는 방법 숫자인 경우 1 2 SELECT TO_CHAR('1000000', 'FM9,999,999') FROM DUAL; //1,000,000 cs 화폐인 경우 1 2 SELECT TO_CHAR('1000000', 'L9,999,999') FROM DUAL; // \1,000,000 cs DB/Oracle 2022. 5. 12. [Oracle] ORA-06550: PLS-00103: 심볼 ""를 만났습니다 프로시져 호출 시 , 빼먹으면 발생한다. call pr_array(a,b c); =>call pr_array(a,b,c); DB/Oracle 2022. 5. 12. [Oracle] 숫자, 문자 데이터만 추출하기 숫자, 문자로만 된 데이터를 찾을 때 사용하는 방법이다. 나는 REGEXP_LIKE 함수를 사용할 것이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 SELECT 컬럼명 FROM 테이블이름 WHERE REGEXP_LIKE(컬럼, '[^0-9]') //숫자 외의 것이 포함된 것 SELECT 컬럼명 FROM 테이블이름 WHERE NOT REGEXP_LIKE(컬럼, '[^0-9]') //숫자외의 것이 포함된 것이 아닌 것 → Only 숫자 SELECT 컬럼명 FROM 테이블이름 WHERE REGEXP_LIKE(컬럼, '[0-9]') //숫자가 포함된 것 SELECT 컬럼명 FROM 테이블이름 WHERE NOT REGEXP_LIKE(컬럼, '[0-9]') //숫자가 포함된 것이 .. DB/Oracle 2022. 5. 2. [Oracle] SELECT 결과를 INSERT하기 오라클에서 데이터를 삽입할 때 insert를 사용한다. INSERT는 한줄의 데이터만 삽입가능한데, SELECT한 결과를 INSERT 할 수도 있다. 1. 모든 컬럼 복사 INSERT INTO 삽입할 테이블명 SELECT * FROM 불러올 테이블명 예시 1 2 3 INSERT INTO username_history SELECT * FROM user; cs 2. 특정 컬럼 복사 INSERT INTO 삽입할 테이블명 (컬럼1, 컬럼2, ...) SELECT 컬럼1, 컬럼2, ... FROM 불러올 테이블명 예시 1 2 3 INSERT INTO username_history (user_id, user_name) SELECT user_id, user_name FROM user; cs DB/Oracle 2022. 5. 2. [Oracle]컬럼명으로 테이블 찾기 123SELECT COLUMN_NAME, COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE COLUMN_NAME LIKE '%컬럼명%';cs DB/Oracle 2022. 2. 8. [Oracle] 오라클 컬럼(Column) 추가, 삭제 방법 (컬럼 순서 변경) [컬럼 추가] ALTER TABLE test ADD code VARCHAR(5) DEFAULT '-' NOT NULL; ALTER TABLE 테이블명 ADD 컬럼명 데이터 타입 기본값 NULL허용(생략 가능) ; [컬럼 삭제] ALTER TABLE test DROP COLUMN code; ALTER TABLE 테이블명 DROP COLUMN 컬럼명; [컬럼 순서 변경(오라클 12c이상)] INVISIBLE(숨김), VISIBLE(보이기) 속성을 사용한다. 옮기고자 하는 컬럼 위치의 오른쪽(?) 컬럼을 모두 INVISIBLE 시킨 뒤 VISIBLE 해주면 된다 ! 예시로 보는 게 이해가 쉽다. REMARKS를 NAME의 앞으로 옮기고 싶은 경우. 초록색으로 표시한 항목들을 INVISIBLE/VISIBLE 처.. DB/Oracle 2022. 1. 5. [Oracle] N번째 행 가져오기. N번째 행 추출 오라클에서 N번째 ROW의 데이터를 가져오는 방법이다. 1번째 행 가져오기 1 2 3 4 5 6 7 8 SELECT * FROM ( SELECT ROWNUM AS NUM, CODE FROM TP_TABLE ) X WHERE X.NUM = 1; cs 2번째 행 가져오기 1 2 3 4 5 6 7 8 SELECT * FROM ( SELECT ROWNUM AS NUM, CODE FROM TP_TABLE ) X WHERE X.NUM = 2; cs 위와 같이 인라인뷰를 사용해서 N번째 행의 데이터를 가져올 수 있다. DB/Oracle 2021. 11. 24. 오라클에서 Function, Procedure 내용 전체 검색하기 오라클에서 PROCEDURE, FUNCTION의 내용을 전체 검색할 때 사용하는 쿼리이다. /*Procedure검색*/ SELECT * FROM USER_SOURCE WHERE TYPE = 'PROCEDURE' AND TEXT LIKE '%찾고자하는 텍스트%' ORDER BY NAME, LINE /*Function검색*/ SELECT * FROM USER_SOURCE WHERE TYPE = 'FUNCTION' AND TEXT LIKE '%찾고자하는 텍스트%' ORDER BY NAME, LINE 출처:삽질LEE의 아이티 이야기 DB/Oracle 2021. 10. 29. [Oracle]WITH절 사용법 및 예제(임시테이블) WITH절 이란? WITH절은 다른 DBMS에서도 많이 지원하는 기능이나 오라클에서는 WITH절에 정의된 SQL 문장으로 오라클 공유 메모리에 임시 테이블을 생성하여 반복 재사용이 가능하도록 할 수 있다. 그렇게 하면 동일 테이블 접근을 최소화하며 메모리에 생성된 임시 테이블에서 필요한 데이터를 메모리로 접근하기 때문에 디스크 IO로 테이블에 접근하는 것보다 성능을 개선할 수 있다. WITH절을 완전히 숙지하려면 UNION ALL, DECODE/CASE, WITH, ROLLUP/Grouping Sets 등의 사용법을 알아야 한다. 왜냐하면 위의 문장들은 서로 형태 변환이 가능하여 성능상 매우 유리하게 사용될 수 있기 때문이다. WITH절을 사용하는 이유? WITH절은 복잡한 SQL에서 동일 블록에 대해 .. DB/Oracle 2021. 10. 26. [Oracle] 문자열 변환 (REPLACE 함수) 엔터, 탭 제거 REPLACE 함수 REPLACE(컬럼명, '찾을문자', '변환문자') 오라클에서 특정 문자열을 치환하거나 제거하기 위해서는 REPLACE() 함수를 사용하면 된다. 단순 문자열 치환 외에도 엔터값 제거나 태그를 엔터값 치환에도 많이 사용된다. 오라클 10g 부터 정규식 사용이 가능한 REGEXP_REPLACE()함수가 추가 되었다. 특정문자 치환 REPACE(TEXT, 'NAME', 'NM') WITH TEST AS ( SELECT 'Google Store' NM FROM DUAL ) SELECT A.NM , REPLACE(A.NM, 'Store', 'STORE') RE_NM FROM TEST A 특정문자 제거 REPLACE(TEXT, 'Sol', '') WITH TEST AS ( SELECT 'Goo.. DB/Oracle 2021. 10. 26. [Oracle] REGEXP_SUBSTR-콤마로 분리된 값을 컬럼으로 만들기 정규표현식을 이용하여 작성한 예제 쿼리이다. SELECT REGEXP_SUBSTR('A, B, C, D', '[^,]+', 1, 1) AS COL_1 ,REGEXP_SUBSTR('A, B, C, D', '[^,]+', 1, 2) AS COL_2 ,REGEXP_SUBSTR('A, B, C, D', '[^,]+', 1, 3) AS COL_3 ,REGEXP_SUBSTR('A, B, C, D', '[^,]+', 1, 4) AS COL_4 FROM DUAL; 결과는 이렇게 나온다. split 기능처럼 사용할 수 있어서 한번씩 사용하게된다.. LISTAGG와 같이 사용해도 괜찮은 것 같다. DB/Oracle 2021. 10. 6. [Oracle]LISTAGG 여러 행을 하나의 컬럼으로 가져오기 여러행의 데이터를 하나의 컬럼으로 보여주고 싶을 때 LISTAGG 함수를 사용한다.. 오라클 11g에 추가된 함수라 10g이하는 WM_CONCAT 함수를 사용해야한다. SELECT LISTAGG(여러행컬럼, 구분자) WITHIN GROUP (ORDER BY 순서컬럼) FROM TABLE_NAME LISTAGG 인자에 가져올 컬럼과 가져온 컬럼을 구분 할 수 있는 구분자를 넣어주면 된다. 예시 여기서 USER_NAME을 한 컬럼에 출력하자. LISTAGG(USER_NAME, ',')으로 표현했을 경우 홍길동,김길동,이길동으로 포현되며 마지막 이길동 뒤에 ','표시는 생략된다. 정렬기준컬럼은 1줄로 표현되는 데이터의 표현순서를 정해주는 것이다. 별도의 정렬기준 컬럼이 명시되어 있다면, 해당 컬럼명을 ORDE.. DB/Oracle 2021. 10. 1. 이전 1 다음