카테고리 없음

8/22

dlsgur0528 2024. 8. 23. 09:01

null변환 함수

nvl, nvl2 함수는 null인 상황에 다른 값으로 반환할 수 있다

null은 숫자도 문자열도 아닌 사용할수 없는값

null은 연산되면 null이 나온다

 

사용법

 nvl(컬럼명, nul일때 제공할 값) => 컬럼의 데이터형과 일치하는 값만 사용할 수 있다.

 

nvl2(컬럼명,null이 아닐때 제공할 값, null일때 제공할 값)

null인지 아닌지의 상황에서 컬럼의 값이 아닌 다른 값을 제공할 때 사용.

 

문자열 함수

문자열의 길이 반환:  length(값)

대문자 변환 upper(값)

첫 글자만 대문자로 변경(공백 이후 글자에도 적용됨) : initcap(값);

 

문자열 안에서 특정 문자열의 시작 인덱스찾기: instr(값,찾을거);

instr(값,찾을 문자열,시작인덱스) - 시작 인덱스부터 L->R 검색 수행.

ex) instr('ABCDE', 'D') // 4가 나옴, 위치(숫자값이 리턴)가 반환됨,

      instr('ABCDE', 'Z') // 만약 없는걸 찾을려면 0이나옴.

 

-시작인덱스 이후부터 검색

instr('BACAZZZ' ,'A',  instr( 'BACAZZZ' ) +1   )  //처음 A다음에 나온 A의 인덱스

 

 

자식문자열 얻기

substr(값,시작인덱스,자를글자수)

 

substr('ABCDEFG') //여기서 CDE자를려면?

substr('ABCDEFG',3,3 )

 

문자열의 앞 뒤 공백 자르기:

trim(값); trim('   A BC   ') => 'A BC'

 

문자열의 앞 공백 자르기

trim(값);  ltrim('   A BC   ') => 'A BC   '

 

 

문자열의 뒤 공백 자르기

trim(값);  rtrim('   A BC   ') => '    A BC'

 

 

 

 

문자열의 앞, 뒤에 특정문자 채우기 => 동일한 길이의 문자열을 얻을 수 있다.

  문자열 앞에 특정문자 채우기

lpad(값,총글자수,채울문자열) 

 

lpad('ABCDE',10,#) => #####ABCDE

 

 

 

  문자열 뒤에 특정문자 채우기

rpad(값,총글자수,채울문자열) 

rpad('ABCDE',10,#) => ABCDE #####

 

문자열 합치기: concat(값,합칠문자열) ||와 비슷

 

 

조건함수
decode : PL/SQL에서는 사용할 수 없다...

조건을 부여하고 조건에 맞을때 짧은 코드를 실행해야하는 경우

 

사용)

decode(값, 비교값, 실행코드, 비교값,실행코드,,,,,,, 비교값이 없을때의 실행코드)

 

 

case문

  select의 조회컬럼에서 사용됨

  조회된 결과로 비교하여 다른 코드를 실행해야할 때 사용.

  조회된 결과로 비교하여 실행돼야하는 코드가 길 때 사용함.

문법)

select case 컬럼명 when 비교값 then 실행코드

                               when 비교값 then 실행코드

                               when 비교값 then 실행코드

                               else 비교값이 없을 때 실행코드

                     end alias,

                     다른 검색할 컬럼들,,,,

 

문자열 함수 치환.

replace

사용법)

replace(값,찾을문자열,치환할 문자열) 

 값은 컬럼의 값이 될것임

 

 

 

 

변환함수

문자변환: to_char

숫자-> 문자열로 바꾸기 (2024-> 2,024)

//패턴의 길이게 데이터가 크기보다 작다면 적용결과가 ###으로 반환됨.

//설정한 컬럼의 데이터형 크기만큼 설정하자                                                            

to_char(값, '  pattern  ' ) // 0패턴: 데이터가 존재하지 않으면 0을 채워서 보여준다.

//to_char(2024,0,000,000) => 0,002,024

 

9패턴: 데이터가 존재하는 것 까지만 보여준다.

to_char(2024,'9,999,999') => 2.024

 

날짜 ->  문자열로 변환

to_date(날짜,패턴)

이때 패턴에 패턴문자나 특수만자가 아닌 문자열을 사용하면 error 발생 => "문자열" 이렇게 넣어야함

패턴이 길면 error 발생

년-y , 월-mm , 일-dd

요일-d   숫자로 된 요일 얻기 (1-일요일 2-월 3-화 7-토)

        dy- '월' , '화'

       day- '월요일' , '화요일'

오전/오후- am

 

시간: hh:12 시간제 == hh12 ,     hh24-시간제

분: mi

초:ss

분기 -

       

 

날짜변환

날짜형식의 문자열을 날짜로 변환: to_date

 to_date(날짜형식의 문자열, '패턴');

 

숫자변환

숫자형식의 문자열을 숫자로 변환: to_number

 to_number()

 

 

집계(그룹)함수

모든 컬럼의 값을 모아서 하나로 만드는 일

group by절과 함께 사용하면 그룹별 집계를 얻을 수 있다.

여러 레코드가 조회도는 컬럼과 함께 사용되면 error가 발생

where 절에서는 집계함수를 직접 사용할 수 없다.

 

count: 레코드의 총 수를 얻을 때 사용( null인 컬럼은 count에 포함하지 않는다.)

 

사용법) 

 count(컬럼명)

 

합을 구하기

sum: 컬럼의 합계를 구하기...

sum(컬럼명) => 합게를 구할수 있다 ex> 연봉의 총함

 

avg: 컬럼의 평균을 구할때 사용

avg(컬럼명)

 

 

max: 컬럼의 값중 최대값을 구할 때 사용

max(컬럼명)

 

 

min: 컬럼의 값중 최저값을 구할 때 사용

min(컬럼명)

 

 

집계함수는 group by 절과 함께 사용하면 그룹별 집계를 얻을 수 있다.

select   컬럼명,집계함수(일반컬럼) //일반컬럼에는 그룹별 집꼐를 얻기위한 컬럼이 들어감

                                                         //group by절에 포함되지 않는 컬럼 사용 가능

from  테이블명

group by 그룹으로 묶여질 컬럼의 이름

 

그룹별 합(소계)과 총계를 얻기

rollup, cube사용

 

사용법)

 소계 후 전체 합계 얻기

  group by rollup(그룹으로 묶을 컬럼명)

소계를 먼저 얻고, 총계를 얻을 수 있음

 

 

 

 

전체합계 후 소계 얻기

group by cube(그룹으로 무끌 컬럼명)

 

 

rollup과 cube는 여러 컬럼이 그룹으로 묶이면 다른 결과가 보여진다.

사용예)

group by rollup(컬럼명,컬럼명)

-소계 후 합계가 출력되고, 가장 마지막에 총계가 출력됨.

 

cube

 

group by code (컬럼명,컬럼명)

 그룹별 전체합계가 먼저 출력된 후 합계와 소계가 출력된다.