본문 바로가기

전체 글

(142)
SQL 단일행 함수 - 일반함수 (NULL 을 처리하는 NVL, NVL2) 일반함수 NVL, NVL2 (null 값 대신 다른 데이터 출력 하기) 결측치를 다른값으로 치환하는 함수 (머신러닝 할때 굉장히 중요한 함수 중 하나) null 은 어떤것과 더하더라도 출력 되는 값은 null 이 되기때문에 꼭 null은 다른값으로 치환해 주어야 계산이 원활하게 이루어 진다. 예제 : 커미션값이 null 인 사람들의 이름과, 월급과 커미션 출력 select ename, sal, comm from emp where comm is null; 설명 : 만약 데이터가 많다면 , 이게 일부러 null 값인지, 실수로 넣지 않은건지 헷갈릴 수 있기 때문에, null 값을 0으로 치환해 주는 과정을 하는것이 좋다. 예제 : 이름과, 커미션 출력 하는데 커미션이 null 인 사원들은 0으로 치환하여 출..
SQL 단일행 함수 -변환함수 (to_number) , 암시적 형 변환 TO_NUMBER (숫자형으로 변환) 만약, sal(월급) 컬럼이 to_char 인 문자형으로 되어있다면? select ename, sal from emp where sal = 3000 ; 을 출력한다면 오라클의 암시적 형변환으로 인해 출력은 된다. 하지만 제대로된 오라클의 성능을 위해서는 select ename sal, from emp where to_number(sal) = 3000; 이렇게 sal 을 숫자형으로 바꾸어서 출력해 주어야한다 - 지금의 예시는 설명을 위한 예시일뿐 컬럼에 가공(tom_number으로 ) 을 하는 식은 좋지 않다. 암시적 형 변환 다음의 식은 SAl이 숫자형이다. select ename, sal from emp where sal = '3000'; 설명 : where 절에 ..
SQL 단일행 함수 -변환함수 (To_date) 날짜형으로 변환 To _date (날짜형으로 변환), 나라마다 날짜형이 다르기 때문에 해당함수가 쓰인다. 내가 어떠한 환경에 있던 (나라 상관없이) 정확하게 81년 11월 17일에 입사한 사원의 데이터를 오류없이 검색하는 방법 년 월 일 모두를 출력 하는 경우에만 쓰일 수 있는 함수이다. 예제 : 이름과 입사일을 뽑는데 91년 11월17 일 인 사람들을 출력해라. select ename, hiredate from emp where hiredate = to_date ( '91/11/17', 'RR/NN/DD'); 설명 : 확실하게 날짜를 검색하는 방법이다. where 절에 where hiredate = '81/11/17' 도 검색이 되긴 한다. but 다른 환경(다른나라) 가면 오류가 뜰 수 있다는점 문제 : 81년도에 ..
SQL 단일행 함수 -변환함수 (To_char) 문자형으로 변환 변환함수 (데이터 유형을 변환하는 함수 ) 데이터 유형 : 문자형, 숫자형, 날짜형 to_char : 문자형으로 변환하는 함수 to_number : 숫자형으로 변환하는 함수 to_date : 날짜형으로 변환하는 함수 날짜를 문자로 출력할때 사용할 수 있는 날짜 포맷 RRRR, YYYY : 년도 4자리 RR, YY : 년도 2자리 MM, MON : 달 DD : 일 DAY, DY, D : 요일 WW, IW : 주 HH, HH24 : 시간 MI : 분 SS : 초 RR 과 YY 의 차이점 RR 1981 현재 연도에서 가장 가까운 연도로 인식 YY 2081 현재 세기로 인식 —>2050 년 이되면 ? ㅋㅋㅋ 오라클에서 해결방법을 준다고함 ! 오라클 날짜 형식을 살펴보면 대부분 한국에서는 RR/MM/DD 로 되어..
SQL 단일행 함수 - 날짜함수 날짜함수 months_between : 날짜와 날짜 사이의 개월수를 출력 add_months : 날짜에서 개월수를 더한 날짜를 출력 last_day : 특정 날짜의 달의 마지막 날짜를 출력 next_day : 해당날짜의 달에서 앞으로 돌아올 특정 요일의 날짜를 출력 오늘 날짜 출력 하기 (sysdate) select sysdate from dual; 예제 : 내일 날짜 select sysdate + 1 from dual; 날짜 - 날짜 = 숫자 (날짜에서 날짜빼면 그사이의 며칠인지를 뽑는것이기 때문에 날짜가 뽑히는게 아닌 숫자가 뽑힌다.) 날짜 + 숫자 = 날짜 날짜 - 숫자 = 날짜 (months_between) (날짜 사이의 달 구하기) 예시 : 오늘 날짜에서 입사일을 빼보세요 select sysda..
SQL 단일행 함수 - 숫자함수 (Round, Trunc, Mod)반올림, 숫자버리기, 나누기 숫자함수 ROUND (반올림 하여 출력) 예제 : 876.567 소수점 두번째 자리인 6에서 반올림 해서 출력 select round(876.567, 1) from dual; 두번째 자리에서 반올림하면 소수점 첫번째 자리 값만 출력되기 때문에 1 이다. 0 은 = '.' 의 자리수를 의미한다 round(숫자, 0 ) 의 0 은 쓰나, 안쓰나 같은 값이 나온다. 문제 : 우리반 테이블에서 나이를 출력하는데 , 일의 자리에서 바로 반올림 select round(sal, 2) from emp; Trunc (숫자를 버리고 출력하기) 예제 : 876.567 출력, 소수점 두번짜자리인 6과 그 이후 숫자를 모두 버리고 출력 select trunc(876.567, 1) from dual; 설명 : 소수점 이후는 지정..
SQL 단일행 함수 - 문자함수 (Trim, Rtrim, Ltrim) 문자잘라내기 TRIM, RTRIM, LTRIM ( 특정 철자 잘라내기, 오른쪽 철자 잘라내기, 왼쪽철자 잘라내기 ) select 'smith', ltrim('smith', 's'), rtrim('smith', 'h'). trim ('s' from 'smith') from dual; 설명 : smith 는 데이터가 없음으로 select 절 다음에 ' smith ' 입력 해 준뒤, LTRIM, PTRIM, TRIM 을 해준다. ltrim( '단어', '철자') 이고 rtrim 도 마찬가지 but , trim은 (' 철자' from '단어') 순으로 코딩 해 주어야 한다. 응용문제 : email 에서 도메인을 출력 하시오 trim 을 사용할때 ' 자르는 단어 ' 를 한 뭉텅이로 보는게 아니고 들어가있는 단어 하나하나를 인..
SQL 단일행 함수 - 문자함수 (Replace), (Lpad, Rpad) 문자 대체하기, 특정철자를 n 개만큼 채우기 Replace (특정철자를 다른철자로 변경하기) select ename, replace(sal, 0 , '*') from emp; 노*정 으로 출력 되게 하시오 (병원 전광판에 많이 쓰이는 SQL 함수) select replace(ename, substr(ename,2,1),'*') from emp14 설명 : 가운데 이름을 * 로 대체하여 출력해야하기 때문에 replace ( 컬럼명, 바뀔철자, '대체할 문자') 컬럼명은 : ename 바뀔 철자 : 이름 두번째 철자를 추출해야한다. —> substr(ename , 2, ,1 ) —> ename 의 두번째 순서의 글자를 1개만 추출한다 대체할 문자 : '*' select 절의 의미 : ename 의 (2번째철자로부터 1개) 철자를 추출하여서 * 으로 대..