오라클에서 여러 개의 단어를 LIKE로 검색하기 위해서는 동적 쿼리를 사용하거나 LIKE를 OR로 묶어서 사용했다. Oracle 10g부터 정규식 함수가 추가 되었으며 그 중에서 REGEXP_LIKE 함수를 사용하여 다중 검색을 쉽게 할 수 있게 되었다. 기본 사용법 WITH temp_table AS ( SELECT 'Samsung Galaxy Note 4' text FROM dual UNION ALL SELECT 'Apple iPhone 6 Plus' text FROM dual UNION ALL SELECT 'Samsung Galaxy text' text FROM dual UNION ALL SELECT 'Apple iPhone 6' text FROM dual UNION ALL SELECT 'LG G3'..
TO_CHAR를 사용하여 숫자를 문자로 변환하면 소수점 이상이 0일 경우 점(.)으로만 표시되어 변환이 된다. 아래와 같은 포맷(FORMAT) 옵션을 활용하여 변환된 수치 값의 형태를 결정할 수 있다. SELECT TO_CHAR(0.40, 'FM9990.99') STR , RTRIM(TO_CHAR(4, 'FM9990.99'),'.') STR2 --정수일경우 소수점표시 안함 (RTRIM) FROM DUAL;--STR : 0.4 --STR2 : 4 FM9990.99의 의미9는 해당 자리의 숫자를 의미하고 값이 없을 경우 소수점 이상은 공백으로 소수점 이하는 0으로 표시한다.0은 해당 자리의 숫자를 의미하고 값이 없을 경우 0으로 표시하며 숫자의 길이를 고정적으로 표시 할 때 주로 사용한다.FM은 좌우 9로 ..
쿼리(Query)문을 작성하다 보면 오라클에서 제공하는 함수만으로 작성 시 쿼리문이 복잡해 지거나 불가능한 경우도 있다.오라클에서 제공한는 JAVA SOURCE 기능을 사용하면 Java 클래스 생성, 실행이 가능하다. 이 기능을 사용하면 일반 어플리케이션에서 가능한 많은 기능들을 PL/SQL에서 할 수 있을 것이다. 자바(Java) 클래스 생성 자바(Java) 클래스 내부함수 호출을 하는 오라클 함수 생성 1. 자바(Java) 클래스를 생성한다. /* JAVA Class를 생성한다 */CREATE OR REPLACE and RESOLVE JAVA SOURCE NAMED "HelloWorld" AS /*파일명*/ import java.lang.*; import java.io.*; public class H..
오라클 SQL에서는 기본 숫자 체크 함수(ISNUMERIC)를 오랫동안 제공하지 않았기 때문에 다양한 숫자 체크 방법을 사용해 왔다. 그러나 오라클 12c R2 버전부터 VALIDATE_CONVERSION 함수가 제공되기 때문에 숫자 여부를 쉽게 체크할 수 있다. 그러나 이전 오라클 버전에서는 숫자를 체크하는 공식 함수가 없기 때문에 정규식 함수나 TRANSLATE 함수를 사용하여 숫자 여부를 체크하면 된다. 목차VALIDATE_CONVERSION 함수를 사용하여 숫자 체크 (오라클 12c R2 이상)REGEXP_INSTR 정규식 함수를 사용하여 숫자 체크 (오라클 10g 이상)TRANSLATE 함수를 사용하여 숫자 체크 (오라클 8i 이상)사용자 정의 함수 생성하여 숫자 체크 (IS_NUMBER) VA..
오라클 11g부터 PIVOT 기능을 제공합니다. 기존 이하버전에서는 DECODE 함수를 이용하여 로우를 컬럼으로 변경하는 작업을 하였습니다. PIVOT 기능을 이용하면 DECODE의 복잡하고 비직관적인 코드를 조금 더 직관적으로 작성할 수 있습니다. 아쉬운 접은 PIVOT 기능을 사용하더라도 PIVOT을 할 컬럼을 미리 정의를 해 놓아야 한다는 점이다. 상황에 맞게 PIVOT를 사용할지 DECODE를 사용할지 결정해서 사용하면 될꺼 같습니다. SELECT * FROM ( 피벗 대상 쿼리문 ) PIVOT ( 그룹합수(집계컬럼) FOR 피벗컬럼 IN (피벗컬럼값 AS 별칭 ... ) PIVOT 사용법 직군별, 월별 입사 건수 SELECT * FROM ( SELECT job , TO_CHAR(hiredate,..
PL/SQL(Procedure, Package)을 사용하다 보면 동적으로 쿼리(Query)를 생성하거나 텍스트(text) 쿼리를 입력 받아서 실행해야하는 경우가 있다. 다음 두가지 방법을 적절히 사용하면 좋은 결과를 얻을수 있다. EXECUTE IMMEDIATE : Inset, Update, Delete 구문을 실행하거나 Select 구문을 실행 시 INTO를 사용하여 단일 값을 리턴 받을 때 사용 OPEN-FOR : Select 구문을 실행 시 Cursor를 리턴 받을 때 사용 주의 : 바인드 변수(:) 사용 시 쿼리 내부에서 변수명은 의미가 없고 변수 순서, 개수가 USING의 변수 순서, 개수와 일치해야 한다. 바인드 변수가 없다면 USING는 생략가능. 1. EXECUTE IMMEDIATE (IN..
오라클 Benthic Golden(골든) 엑셀(Excel) 파일 Insert 하기 (Data Import) - 골든(Golden)에서 기본으로 제공하는 툴(ImpExp)를 이용하여 대량의 데이트(엑셀파일 등)을 쉽게 Insert 할 수 있다.1) Insert 테이블의 컬럼 정보를 조회 후 컬럼에 맞는 엑셀 파일을 만든다. 2) 생성한 엑셀파일을 .CSV 형식으로 저장한다. 3) 상단 메뉴 Tools -> Data Import/Export 을 선택하여 툴(ImpExp)을 실행한다. 4) 날짜 형식을 CSV파일과 동일하게 맞춰준다. Import To Oracle 탭에서 Source File(.csv) 파일과 Destination Table을 선택하고 Start Import 버튼을 누르면 엑셀파일이 Inser..
오라클 Benthic Golden(골든) DBMS OUTPUT Window 사용하여 프로시저 로그출력 - 복잡한 프로시저를 실행 시 DBMS_OUTPUT를 삽입하여 값을 확인하거나 디버깅 시 Log를 확인 하는 용도로 사용할 수 있다. - 상단 메뉴 -> View -> DBMS OUTPUT Window를 실행 한다. 1) 프로시저 생성 - 값을 확인 할 위치에 DBMS_OUTPUT.put_line를 추가한다.2) 프로시저 실행- DBMS_OUTPUT Window를 활성화 시킨 후 프로시저를 실행 한다.
오라클 Benthic Golden(골든) 날짜 포맷 변경하기 - 날짜 포멧을 변경하면 조회결과 영역과 쿼리상의 날짜타입의 컬럼에 텍스트 값을 입력시 해당 포맷으로 캐시팅 된다. - 날짜 포맷은 상단메뉴 Tools -> Program Options -> General 에서 변경이 가능하다.- 포맷(YYYY-MM-DD, YYYY/MM/DD, YYYY-MM-DD HH24:MI:SS)
오라클 Benthic Golden(골든) 프로시저(Procedure) 실행하기 1) return cursor가 있는 패키지(package) , procedure(프로시저)를 생성한다2) 프리시저 실행 시 REFCURSOR 변수(var)를 하나 선언하여 실행하면 결과 값이 조회된다.