오라클 사용하면서 가장 힘들어 했던 부분이 함수다..ㅜㅜ 개념을 확실이 알고 넘어가기 위해 포스팅한다
일단 교재에 나오는 기본개념 부터 알고 가자
그림은 이렇게 되어 있다 사실은 알록달록하다 ....
SQL 함수
- SQL 함수는 때때로 인수를 받아들일 수 있으며 항상 값을 반환한다
- 함수는 SQL의 매우 강력한 기능입니다. 다음 작업을 수행하는 데 함수를 사용할수 있다.
- 데이터에 대해 계산수행
- 개별 데이터 항목 수정
- 행 그룹에 대한 출력 조작
- 표시할 날짜 및 숫자의 형식 지정
- 열 데이터 유형 변환
SQL 함수의 두가지 유형
함수의 유형은 다음 두 가지 로 나온다
- 단일 행 함수
- 여러 행 함수
단일행 함수
- 데이터 항복을 조작한다
- 인수를 받아들이고 하나의 값을 반환한다
- 반환되는 각 행에서 실행된다
- 행당 하나의 결과를 반환한다
- 데이터 유형을 수정할수 있다
- 중첩될 수 있다
- 열이나 표현식을 인수로 받아들일 수 있다.
문자함수: 문자 입력을 받아들이며 문자 및 숫자 값을 모두 반환할 수 있다.
숫자함수: 숫자 입력을 받아들이고 숫자 값을 반환 한다
날짜함수: DATE 데이터 유형의 값에 대해 실행된다.
MONTHS_BETWEEN 함수를 제외 하고는 모든 날짜 함수는 DATE 데이터 유형의 값을 반환한다
변환 함수 : 값의 데이터 유형을 반환한다
일반함수:
- NVL
- NVL2
- NULLIF
- COALESCE
- CASE
- DECODE
문자 함수
대소문자 변환 : LOEWER , UPPER, INITCAP
문자 조작함수: CONCAT,SUBSTR,LENGTH,INSTR,LPAD,TRIM,REPLACE
문자함수
단일 행 문자 함수는 입력으로 문자 데이터를 받아 드링고 문자 및 숫자 값을 모두 반환할 수 있다. 밑에 표를 보자!
함수 | 목적 |
LOWER(column|expression) | 영문자 값을 소문자로 반환한다 |
UPPER(column|expression) | 영문자 값을 대문자로 반환한다 |
INITCAP(column|expression) | 영문자 값의 첫번째 문자를 대문자로 반환하고 나머지 문자는 소문자로 둔다 |
CONCAT(column|expression|column2|expression2) | 첫번째 문자 값을 두번째 문자 값과 연결합니다. 연결 연산자와 같은 기능이다 |
SUBSTR(column|expression,m[,n]) | m 위치에서 시작하는 문자 값에서 n개의 문자 길이만큼 지정된 문자들을 반환한다 ( m이 음수인 경우 문자 값 끝에서부터 카운트를 시작한다 n이 생략된 경우 문자열의 끝까지 모든 문자가 반환된다.) |
LENGTH | 표현식의 문자 수를 반환한다 |
INSTR(column|expression,String,[,m],[,n]) | 지정된 문자열의 숫자 위치리를 반환한다 선택적으로 검색 시작 위치 m과 문자열의 발생 수 n을 제공할 수 있습니다. m과n의 기본값은 1이며, 이경우 문자열의 처음부터 검색을 시작하고 첫번째로 찾은 결과를 보고 한다. |
LPAD(column|expression,n,String,) RPAD(column|expression,n,String,) |
길이가 n이 되도록 왼쪽부터 문자식으로 채운 표현식을 반환한다 길이가 n이 되도록 오른쪽 부터 문자식으로 채운 표현식을 반환한다 |
TRIM(leading|trailing|both,trim_character FROM trim_source) | 문자열에서 선행 또는 후행 문자( 또는 둘 다)를 자를수 있습니다. trim_character 또는 trim_source 가 문자 리터럴 인 경우 작은 따옴표 |
REPLACE(text,search_string,replacement_string) | 텍스트 표현식에서 문자열을 검색하여 해당 문자열을 찾으면 지정된 대체 문자열로 바꿉니다. |
대소문자 변환 함수 사용
Greenberg의 사원번호 이름 및 부서 번호를 표시한다
첫번째 SQL 문의 WHERE 절은 사원 이름을 greenberg 로 지정한다 테이블의 모든 데이터는 대소문자를 구분하여 저장되기 때문에 테이블에서 greenberg 라는 이름과 비교하도록 지정하는데, 이대 비교를 위해 LST_NAME 열을 소문자로 변환한다 이제 두 이름이 모두 소문자이기 때문에 일치하는 항목을 찾게 되고 한 행이 선택된다.
문자 조작함수
짧게 예시를 표로 작성해봤다
함수 | 결과 |
CONCAT('Hello','World') | HelloWorld |
SubSTR('HelloWorld',1,5) | Hello |
LENGTH('HelloWorld') | 10 |
INSTR('HelloWorld','W') | 6 |
LPAD(salary,10,'*') | *****24000 |
RPAD(salary,10,'*') | 24000***** |
REPLACE('JACK AND JUE','J','BL') | BLACK AND BLUE |
TRIM('H' FROM 'HelloWord') | elloWorld |
직무 ID 의 네번째 위치에 REP 문자열이 포함된 모든 사원에 대해 사원이름과 성이함께 연결된값, 사원 성의 길이, 사원 성에서 문자 "a"가 나타나는 숫자 위치를 표시한다
위와 같은 문제이다 위에는 직무 ID의 네번째 위치에 REP 문자열이 포함된 모든사원 이지만 여기는 사원성이 "n"으로 끝나는 모든 사원의 데이터를 표시 했다.
숫자 함수
ROUND: 지정된 소수점 자릿수로 값을 반올림한다,
TRUNC: 지정된 소수점 자릿수로 값을 trucate 한다.
MOD: 나눈 나머지를 반환한다
함수 | 결과 |
ROUND(45.926 ,2) | 45.93 |
TRUNC(45.926 ,2) | 45.92 |
MOD(1600, 300) | 100 |
함수 | 목적 |
ROUND | 열 표현식 또는 값을 소수점 n 자릿수로 반올림한다 n이 생략된 경우 소수점 자릿수가 없다 (n이 음수인 경우 소수점 왼쪽의 숫자가 반올림 된다) |
TRUNC | 열 표현식 또는 값을 소수점 n자릿수로 자릅니다. |
MOD(m,n) | m을 n으로 나눈 나머지를 반환 한다 |
ROUND 함수 사용
ROUND 함수는 열, 표션식 또는 값을 소수점 n자릿수로 반올림합니다. 두번째 인수가 0이거나 누락되었으면 값은 소수점 0자릿수로 반올림한다 . 두번째 인수가 2이면 값은 소수점 2자릿수로 반올림한다. 반대로, 두번째 인수가 -2이면 소수점 왼쪽의 둘째 자릿수로 반올림한다
ROUND 함수는 날짜 함수와도 함께 사용할 수 있다.
TRUNC 함수 사용
TRUNC 함수는 열, 표현식 또는 값을 소수점 n자릿수로 자른다
TRUNC 함수는 ROUND 함수에 사용된 것과 유사한 인수를 사용한다 두번째 인수가 0이거나 누락되었으면 값은 소수점 0자릿수로 잘립니다. 반대로 , 두번째 인수가 -2이면 소수점 왼쪽의 둘째 자릿수로 truncate되고 두번째 인수가 -1이면 소수점 왼쪽의 첫째 자릿수로 truncate 됩니다.
MOD함수 사용
MOD 함수는 첫번째 인수를 두번째 인수로 나눈 나머지를 찾는다 함수는 종종 값이 홀수 인지 짝수인지 판별하는데 사용된다
'DB' 카테고리의 다른 글
Oracle (변환 함수) (0) | 2020.11.20 |
---|---|
Oracle 날짜 함수 (0) | 2020.11.20 |
Oracle(기본문제) (0) | 2020.11.18 |
Postgresql(설치 및 사용법) (0) | 2020.11.15 |
Oracle 우선순위규칙 (0) | 2020.11.13 |