반응형

오라클 함수 21

[oracle] RANK(), DENSE_RANK(), ROW_NUMBER() 함수 간단 비교

오라클에서 RANK(), DENSE_RANK(), ROW_NUMBER() 함수는 모두 순위를 정하는 함수입니다. 비슷한 방식으로 돌아가지만 아주 약간 결과 값이 다르게 출력됩니다. 성적 테이블에 위와 같이 성적이 입력돼 있습니다. 랭킹을 출력해 보겠습니다. SCORE가 큰 순서대로 1,2,3등이 부여되는 쿼리입니다. 아래와 같이 결과 값이 나옵니다. RANK 함수 SCORE가 같으면 같은 등수를 부여하고, 다음 SCORE는 이전까지 등수를 결정한 학생들 수 + 1의 등수를 매깁니다. 김태호, 박나래가 공동 2등이고, 3등을 건너뛰고 장도연에게 4등을 부여했습니다. 2등이 세명이라면 장도연은 5등이 됐겠죠. DENSE_RANK 함수 SCORE가 같으면 같은 등수를 부여하고, 같은 등수가 몇명이든지 다음 S..

IT 2020.02.12

[오라클/함수] 두 날짜 사이의 월 수 구하기 MONTHS_BETWEEN

Syntax Purpose 두 일자사이의 개월 수를 구하는 함수. date1 - date2 의 값이 리턴되므로 date1의 날짜가 클 경우에는 양수, date2의 날짜가 클 경우에는 음수가 리턴됩니다. 정수 뒷부분에 소숫점 부분은 1개월을 1로 봤을때 얼마의 크기인지를 보여주는 값입니다. Examples 아래의 예제는 오늘이 제가 태어난 개월 수를 구하는 예제입니다. 오늘 날짜와(SYSDATE) 제 생년월일(1976-12-14)을 인자로 주면 481개월이라는 값이 리턴됩니다. 값이 작은 제 생년월일에서 값이 큰 오늘 날짜를 빼게되면 아래와 같이 마이너스 값이 나타나게 됩니다.

IT 2017.01.20

[오라클/함수] 날짜에서 년도, 월, 일 발췌하기 EXTRACT 함수

Syntax Purpose 오라클 EXTRACT 함수는 단어 뜻 그대로 일자정보에서 년도, 월, 일과 같은 특정 내용을 발췌하는 함수입니다. 상단 Syntax에 보면 날짜정보를 가진 expr 에서 년도, 월, 일, 시간, 분, 초 등을 추출해 낼 수 있습니다. YEAR : 년도 MONTH : 월 DAY : 일 HOUR : 시간 MINUTE : 분 SECOND : 초 TIMEZONE_HOUR : TIMEZONE형의 시간 TIMEZONE_MINUTE :TIMEZONE형의 분 TIMEZONE_REGION : TIMEZONE의 지역 TIMEZONE_ABBR : TIMEZONE 지역에 대한 약어 여기서 주의할 점은 YEAR, MONTH, DAY 를 추출할 때는 expr에 DATE형이나, TIMESTAMP형등 어떤..

IT 2016.12.19

[오라클/함수] 개월 수 더하기 ADD_MONTHS 함수

Syntax date : 기준일. date 타입이나 date로 변환될 수 있는 값. integer : 플러스 할 개월 수 Purpose 업무를 하다보면 지금 이후로 50개월, 100개월 후의 날짜를 구해야 하는 상황이 있습니다. 그때 사용하는 함수가 ADD_MONTHS 함수입니다. 기준일과 플러스 할 개월수를 인자로 보내면 개월수가 플러스 된 일자가 리턴됩니다. 오늘부터 50개월 후의 일자를 알고 싶으면 ADD_MONTHS(SYSDATE, 50) 을 하면 됩니다. Examples 1. 지금부터 50개월 후의 일자 2. 기준일 자리에는 DATETIME 값이나 DATE형으로 묵시적으로 변환될 수 있는 데이터만 입력가능 - 문자열 '14-DEC-2016' 는 DATE 타입으로 묵시적 변환이 가능하기 때문에 함..

IT 2016.12.16

[오라클/함수] 문자열 길이 구하기 LENGTH 함수

Syntax Purpose LENGTH 함수는 인자로 주어진 문자열의 길이를 구하는 함수입니다. LENGTH('ABC') 라고 했을 경우 문자가 세개이므로 3이 리턴됩니다. LENGTHB 는 문자열의 바이트 길이를 리턴하고, LENGTHC, LENGTH2, LENGTH4의 경우 UNICODE 문자열의 길이를 리턴합니다. Examples 1. 기본문자열길이 기본문자의 개수이기 때문에 3이 리턴 2. 문자열 바이트 길이 한문자당 한 바이트를 사용하기 때문에 바이트 수를 세는 LENGTHB 함수를 사용해도 3이 리턴 3. 문자열 바이트 길이(멀티바이트의 경우) TO_MULTI_BYTE 함수를 이용하여 single byte를 multi byte로 변경해주고 바이트 숫자를 리턴받음. 한 문자에 3바이트식 할당되어..

IT 2016.12.15

[오라클/함수] 문자열 속 문자 위치 찾기 INSTR 함수

Syntax string : 찾고자 하는 대상 문자열 및 컬럼명 substring : 찾고자 하는 타겟 문자열 position : string에서 찾을 시작위치 occurrence : 찾은 문자열이 여러개일 경우 몇번째 나타나는 문자열인지 Purpose INSTR 함수는 문자열(string)에서 지정된 문자열(substring)을 검색해서 그 위치를 리턴하는 함수입니다. 위치는 지정된 문자열이 나타나는 제일 첫번째 위치를 리턴합니다. 예를들어 'CONGRATULATIONS'라는 단어에는 'AT'라는 문자열이 두번 나타납니다(CONGRATULATIONS). 첫번째 AT와 두번째 AT를 찾는 문장은 아래와 같습니다. 첫번째 'AT' 검색 : INSTR('CONGRATULATIONS', 'AT', 1, 1) ..

IT 2016.12.14

[오라클/함수] ASCII 코드 값을 원할때 ASCII 함수

Syntax Purpose ASCII 함수는 char 문자열의 첫번째 문자에 대한 ASCII 코드를 리턴하는 함수입니다. 'Lee' 라는 문자열을 인자로 보냈을때 ASCII 함수는 제일 첫번째 문자인 'L'에 대한 ASCII 코드를 리턴하게 되는거죠. 오라클 레퍼런스에 보면 아래와 같은 예제가 나오는데요 SELECT last_name FROM employees WHERE ASCII(SUBSTR(last_name, 1, 1)) = 76 ORDER BY last_name; LAST_NAME ------------------------- Ladwig Landry Lee Livingston Lorentz 조건문에서 ASCII(SUBSTR(last_name, 1, 1)) = 76 이 구문은 ASCII(last_n..

IT 2016.12.12

[오라클/함수] 문자열 자르기 SUBSTR 함수

Syntax Purpose SUBSTR 함수는 정해진 문자를 특정 자릿수만큼 잘라내는 기능을 하는 함수입니다. char 문자열에 대해서 position 에 정해진 자릿수부터 substring_length 자리만큼 잘라내는 것입니다. 예를들어 'ABCDEFG' 문자열에서 중간 'CD' 문자열만 잘라내고 싶을 경우 SUBSTR('ABCDEFG', 3, 2) 이렇게 사용하시면 됩니다. 이 문장의 뜻은 'ABCDEFG' 의 3번째 문자(제일 앞자리 A가 1이기 때문에 3이면 세번째자리 'C'를 뜻합니다.)부터 2자리를 잘라내서 리턴하라는 뜻입니다. 몇가지 예제를 살펴보겠습니다. 1. position 값이 0 일때는 position 값을 1로 처리합니다. 2. position 값이 음수일 경우에는 문자 제일 마지..

IT 2016.12.09

[오라클/함수] 문자 및 문자열 바꾸기 REPLACE, TRANSLATE 함수

Syntax Purpose 오라클에서 문자열을 바꿀때 REPLACE 함수를 많이 사용합니다. 저 역시도 REPLACE 함수를 대부분 사용했었습니다. 그런데 오라클 레퍼런스를 보니 TRANSLATE 함수도 있네요. 두 함수 모두 해당 지정된 문자열을 바꿔주는 함수인데, 약간의 차이가 있습니다. 이 두 함수의 차이점에 대해서 알아보도록 하겠습니다. 상단의 문법을 참고해 주세요. 먼저 REPLACE 함수는 char 문자열에서 search_string 문자열을 찾아서 replace_string 문자열로 바꿔주는 기능을 합니다. 여기서 '문자열'이라는것이 중요한데, search_string에 나오는 정확한 문자열이 char에 없으면 문자열 변환작업을 하지 않습니다. 예를들어 아래 REPLACE 문을 수행하면 이렇..

IT 2016.12.08

[오라클/함수] 문자열 잘라내기 TRIM 함수

Purpose LTRIM은 왼쪽 잘라내기, RTRIM은 오른쪽 잘라내기라고 얘기했었습니다. TRIM은 문자열 양쪽을 잘라내는 함수 입니다. Syntax trim_source : trim 처리 할 문자열 LEADING : 왼쪽을 잘라낼거면 'LEADING' 입력 TRAILING : 오른쪽을 잘라낼거면 'TRAILING' 입력 BOTH : 양쪽을 잘라낼거면 'BOTH' 입력 trim_character : 잘라낼 문자 Examples 1. 잘라낼 문자를 입력하지 않은 경우 잘라낼 문자를 적용하지 않은 경우는 공백이 제거됩니다. 위 예제에서 잘라낼 문자를 넣지 않았으므로, 양끝의 공백이 제거된 것을 볼 수 있습니다. 2. 잘라낼 문자만 입력한 경우 잘라낼 문자로 '*'를 입력하면 양쪽에 있는것이 제거됩니다. 3..

IT 2016.11.30
반응형