DB33 [Oracle] 다중 WITH절 사용법 및 예제 이전 글에서 WITH절 사용법에대해 글을 썼다. 이번엔 다중 WITH절에대해 간략하게 써볼 것이다. 기본 WITH절에서 콤마로 구분하여 WITH절을 여러개 선언한다. WITH절안에서 다른 WITH절을 참조하는것도 가능하다. 아래는 기본 예제이다. WITH T1 AS ( SELECT '1' A FROM DUAL UNION ALL SELECT '2' FROM DUAL ), T2 AS ( SELECT '3' A FROM DUAL UNION ALL SELECT A FROM T1 ) SELECT * FROM T2 WITH EXAMPLE1 AS ( SELECT 'EX1' A FROM DUAL UNION ALL SELECT 'EX2' FROM DUAL ), EXAMPLE2 AS ( SELECT 'EX3' A FROM.. DB/Oracle 2021. 10. 29. JDBC-5074:Given string does not represent a number in proper format. 티베로를 사용하다가 자주 볼 수 있는 에러다. 티베로 공식 에러 참고 안내서에 따르면 이렇게 나온다. 해석하면 원인: 주어진 문자열이 적절한 숫자를 나타내지 않습니다 해결 :문자열의 유형을 확인하십시오. NUMBER 타입의 컬럼에 String 을 넣거나... NUMBER 이외의 데이터를 입력하면 나는 에러이다. DB/Tibero 2021. 10. 28. [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]테이블 및 데이터 복사하기(백업) 테이블 구조와 데이터 복사하기 CREATE TABLE 신규 테이블명 AS SELECT * FROM 복사할 테이블명; 테이블 구조만 복사하기 CREATE TABLE 신규 테이블명 AS SELECT * FROM 복사할 테이블명 WHERE 1=2; 테이블이 존재할 경우, 데이터만 복사하기(구조가 같은 경우) INSERT INTO 복사대상 테이블명 SELECT * FROM 원본테이블명; 테이블이 존재할 경우, 데이터만 복사하기(구조가 다른 경우) 구조가 다른 경우 복사하고자 하는 필드명을 나열해 줍니다. 대응되는 필드의 이름이 같을 필요는 없고, 타입/길이 는 대상 쪽이 크거나 같아야 합니다. NOT NULL 필드는 빼먹으면 오류가 나므로 주의해야 합니다. INSERT INTO 복사대상 테이블(COLUMN1, .. DB/Oracle 2021. 10. 14. [SQL] ROW 중복제거(DISTINCT, GROUP BY) DISTINCT 로 중복 행 제거 SELECT DISTINCT 컬럼명 FROM 테이블명 WHERE 조건절; 예제 SELECT DISTINCT DEPT_NO FROM TB_DEPT ↓ GROUP BY 로 중복 행 제거 SELECT DISTINCT 컬럼명 FROM 테이블명 WHERE 조건절 GROUP BY 그룹화할 컬럼명; 예제 SELECT DEPT_NO FROM TB_DEPT GROUP BY DEPT_NO; ↓ DISTINCT, GROUP BY 차이점 DISTINCT : 중복을 없애주지만 정렬을 해주지 않는다. GROUP BY : 중복을 없애주고 정렬도 해준다. DB/SQL 2021. 10. 12. [Oracle]REGEXP_SUBSTR-콤마로 분리된 문자열을 여러 행으로 변환하기 정규표현식을 이용하여 콤마로 분리된 문자열을 여러 행으로 변환하는 예제이다. SELECT REGEXP_SUBSTR(STR, '[^,]+', 1, LEVEL) AS SUBSTR FROM ( SELECT 'A,B,C,D,' AS STR FROM DUAL ) CONNECT BY LEVEL DB/Oracle 2021. 10. 6. [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 2 3 다음