데이터베이스 45

오라클 SQL과 PL/SQL ( 정규식 / REGEXP_COUNT )

REGEXP_COUNT는 11g에서 추가된 정규식 함수 입니다. REGEXP_COUNT는 특정 문자의 개수를 세는 함수 입니다. 예제로 알아보도록 하겠습니다. 예제 1. 주어진 문자열에서 대문자 'A'가 몇 개인지 찾으세요. 더보기 SELECT TEXT, REGEXP_COUNT(TEXT, 'A') FROM T_REG ; 예제 2. 검색 위치를 3으로 지정해서 3번째 문자 이후 부터 소문자 'c'가 나오는 개수를 세는 예제 더보기 SELECT TEXT, REGEXP_COUNT(TEXT, 'c', 3) FROM T_REG ; 예제 3. i 옵션으로 대 소문자 구분 없이 몇개인지 알아보는 예제 더보기 SELECT TEXT, REGEXP_COUNT(TEXT, 'c') "result 1", REGEXP_COUNT..

오라클 SQL과 PL/SQL ( 정규식 / REGEXP_SUBSTR )

REGEXP_SUBSTR 함수는 SUBSTR의 확장판으로 특정 패턴에서 주어진 문자를 추출해 내는 함수입니다. 아래 예는 주어진 문자열에서 첫 글자가 공백이 아니고 ( '[^]' ) 그 후에 'DEF'가 나오는 부분을 추출하라는 쿼리입니다. SELECT REGEXP_SUBSTR('ABC* *DEF $GHI%KJL', '[^ ]+[DEF]') FROM DUAL; 예제를 통해 알아보는게 제일 빠르니 예제를 알아봅시다. 1. 교수테이블에서 홈페이지 주소가 있는 교수들만 조사해서 아래의 화면처럼 나오게 출력하세요. 더보기 SELECT NAME, HPAGE, LTRIM(REGEXP_SUBSTR(HPAGE, '/([[:alnum:]]+\.?){3,4}?'), '/') "URL" FROM PROFESSOR WHERE..

오라클 SQL과 PL/SQL ( 정규식 / REGEXP_REPLACE )

REGEXP_REPLACE 함수 이 함수는 REPLACE함수를 확장한 개념으로 주어진 문자열에서 특정 패턴을 찾아서 주어진 다른 모양으로 치환하는 함수입니다. 사용법이 다소 복잡하지만 아주 유용하게 사용되는 함수이므로 익혀야 합니다. 문법 REGXPP_REPALCE(source_char, patten [, replace_string [, position [, occurrence [, match_param]]]] ) souce 원본 데이터를 의미합니다. 컬럼명이나 문자열이 올 수 있고 올 수 있는 데이터 타입은 CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, NCLOB 입니다. patten 찾고자 하는 패턴을 의미합니다. 512바이트까지 정규표현식을 사용하며 데이터 타입은 CHAR,..

오라클 SQL과 PL/SQL ( 정규식 / REGEXP_LIKE )

정규식(Regular Expression) 함수로 다양한 조건 조회하기 SQL 문장에서도 유닉스에서 사용하는 정규식을 사용하여 다양한 검색을 할 수 있습니다. 정규식이란 유닉스에서 검색을 할 때 주로 사용되는 기술로 다양한 메타문자들을 사용하여 검색 방법을 확장하는 것을 말합니다. 정규식함수를 잘 활용하면 아주 많은 일들을 할 수 있습니다. 하지만 조금 어려울 수 있으니 어렵더라도 연습을 해야합니다. 1. REGEXP_LIKE 함수 : LIKE 함수처럼 특정 패턴과 매칭되는 결과를 검색해내는 함수 예제 1. 영문자가 들어있는 행만 출력하기 SELECT * FROM T_REG WHERE REGEXP_LIKE(TEXT, '[a-z]'); SELECT * FROM T_REG WHERE REGEXP_LIKE(T..

오라클 SQL과 PL/SQL ( 일반 함수 - 2 )

CASE문 DECODE함수는 주로 =인 값을 처리하는데 사용합니다. 즉 크거나 작은 조건을 처리할 경우는 DECODE가 불편한 부분이 많은데 이런 부분을 CASE문에서 쉽게 처리가 가능합나다. 단 DECODE함수의 경우 내부에 , 로 조건이 구분 되었으나 CASE표현식 내부는 , 가 사용되지 않습니다. DECODE와 동일하게 '=' 조건으로 사용되는 경우 STUDENT 테이블을 참조하여 DEPTNO1이 201번인 학생의 이름과 전화번호, 지역명을 출력하세요. 단 지역번호가 02면 SEOUL, 031 GYEONGGI, 051 BUSAN, 052 ULSAN, 055 HYEONGNAM , 나머지는 ETC로 출력하세요. DECODE : SELECT NAME, TEL, DECODE(SUBSTR(TEL, 0, IN..

오라클 SQL과 PL/SQL ( 일반 함수 - 1 )

일반함수는 함수의 입력되는 값이 숫자, 문자, 날짜 구분 없이 다 사용할 수있는 함수이다. 다양한 함수가 있지만 가장 일반적으로 많이 사용하는 함수를 살펴보겠습니다. NVL() 함수 : NULL값을 만나면 다른 값으로 치환해서 출력하는 함수 NVL(SAL, 0) : SAL컬럼의 값이 NULL일 경우 NULL 대신 0으로 치환 NVL(SAL,100) : SAL컬럼의 값이 NULL일 경우 NULL 대신 100으로 치환 COMM의 값이 있을 경우 기존의 COMM 값을 출력하고 COMM 값이 NULL일 경우 다른 값으로 바꾸어 출력이 되는 것을 볼 수 있다. 하지만 꼭 숫자값만 되는 것은 아니고 문자나 날짜도 가능하다. NVL(POSITION, '사원') : POSITION값이 NULL일 경우 '사원'으로 치환..

오라클 SQL과 PL/SQL ( 형 변환 함수 - 2 )

TO_CHAR 함수 : 숫자형 -> 문자형으로 변환 종류 의미 사용 예 결과 9 9의 개수만큼 자릿수 TO_CHAR(1234, '99999') 1234 0 빈자리를 0으로 채움 TO_CHAR(1234, '099999') 001234 $ $표시를 붙여서 표시 TO_CHAR(1234, '$9999') $1234 . 소수점 이하를 표시 TO_CHAR(1234, '9999.99') 1234.00 , 천 단위 구분 기호를 표시 TO_CHAR(1234, '99,999') 12,345 문제 1. EMP 테이블을 조회하여 이름이 ALLEN인 사원의 사번과 이름과 연봉을 출력하세요, 단 연봉은 (SAL * 12) + COMM으로 계산하고 천 단위 구분 기호로 표시하세요. 풀이 : 더보기 SELECT EMPNO, ENAM..

오라클 SQL과 PL/SQL ( 형 변환 함수 )

오라클에서 사용하는 데이터 타입을을 살펴보면 아래와 같다. CHAR(n) 고정길이의 문자를 저장. 최대값은 2000바이트 VARCHAR2(n) 변하는 길이의 문자를 저장. 최대값은 4000바이트 NUMBER(p.s) 숫자 값을 저장. P는 전체 자릿수로 1~38자리까지 가능하고, S는 소수점 이하 자릿수로 -84~127자리까지 가능 DATE 총 7바이트로 BC 4712년 1월 1일부터 AD 9999년 12월 31일까지 날짜를 저장할 수 있다. LONG 가변 길이의 문자를 저장. 최대 2GB까지 저장 CLOB 가변 길이의 문자를 저장. 최대 4GB까지 저장 BLOB 가변 길이의 바이너리 데이터를 저장. 최대 4GB까지 저장 RAW(n) 원시 이진 데이터로 2000바이트 저장 LONG RAW(n) 원시 이진..

오라클 SQL과 PL/SQL ( 날짜 관련 함수 )

날짜관련 함수들 우리가 평소 일상생활에서 날짜를 사용하는 경우 7월 20일 + 3은 7월 23일로 생각한다, 7월 20일 - 3은 7월 17일로 생각한다. 7월 20일 - 7월 15일은 5일 차이가 난다고 생각한다. 위 세가지 경우에서 알 수 이듯이 일반적으로 날짜 + 숫자 = 날짜로 인식하고, 날짜 - 숫자 = 날짜로 인식한다. 그리고 날짜 - 날짜 = 숫자로 인식 합니다. SYSDATE : 시스템의 현재 날짜와 시간 / 결과 : 날짜 MONTHS_BETWEEN : 두 날짜 사이의 개월 수 / 결과 : 숫자 ADD_MONTHS : 주어진 날짜에 개월을 더함 / 결과 : 날짜 NEXT_DAY : 주어진 날짜를 기준으로 돌아오는 날짜를 출력 / 결과 : 날짜 LAST_DAY : 주어진 날짜가 속한 달의 마..

오라클 SQL과 PL/SQL ( 숫자관련 함수 )

숫자함수란 함수에 입력되는 값이 숫자인 함수를 말하며 아래와 같은 종류가 있습니다. ROUND : 주어진 숫자를 반올림한 후 출력 TRUNC : 주어진 숫자를 버림한 후 출력 MOD : 주어진 숫자를 나눈 후 나머지 값을 출력 CEIL : 주어진 숫자와 가장 근접한 큰 정수를 출력 FLOOR : 주어진 숫자와 가장 근접한 작은 정수를 출력 POWER : 주어진 숫자 1의 숫자 2승을 출력함 1. ROUND() / (숫자, 출력을 원하는 자릿수) / 주어진 숫자를 반올림한 후 출력 2. TRUNC() / (숫자, 원하는 자릿수) / 주어진 숫자를 버림한 후 출력 3. MOD , CEIL , FLOOR MOD : 주어진 숫자를 나눈 후 나머지 값을 출력 CEIL : 주어진 숫자와 가장 근접한 큰 정수를 출력..

728x90