본문 바로가기

Oracle/SQL

(98)
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개) 철자를 추출하여서 * 으로 대..
SQL 단일행 함수 - 문자함수 Instr (특정철자의 위치 출력) instr (특정 철자의 위치(number)를 출력하기) select instr('SMITH', 'M') from dual; -> 만약 없는 철자를 입력하게 되면 값은 '0' 이 나온다. 문제 : 이름, 이름의 철자에 알파벳 A 가 몇번째에 있는지 출력 select ename, instr(ename, 'A') from emp; ->A가없는 사람은 0 으로 나온다. 문제 : 이름에 알파벳 a 를 포함하는 사원 이름 출력 select ename from emp where instr(ename, 'A' ) ! = 0 ; 설명 : instr 은 숫자를 뽑아내는 함수임으로 ename 에서 a를 포함된 문자를 출력하게 되면 반드시 값이 1이상으로 나온다. 만약 이름 철자에 'A' 가 없는 사람들을 뽑으려면 inst..
SQL 단일행 함수 - 문자함수 Length (문자열길이출력) Length 함수 length ( 문자열의 길이를 출력하기) select ename, length(ename) from emp; -> ename 과, 철자에 대한 길이의 숫자가 함께 출력된다.
SQL 단일행 함수 - 문자함수 Substr( 문자에서 특정단어 or 철자 추출 ) substr : 문자에서 특정 철자 추출하기 문자에서 지정된 길이의 문자열을 추출할 수 있다. substr (' 단어나 컬럼명' , 뽑아올 순서의 단어 순서, 철자의 수 ) 특정 조건을 사용해서 출력 할때 where substr( , , ) = 참고로 substr 함수는 문자 이기 때문에 = 뽑을 특정 단어도 문자 함수(to_char)로 추출 할 것 '' 싱클 쿼테이션 마크로 두르기 예제 17 : smi 만 출력하기 select substr('s m I t h' , 1, 3, ) 설명 (' smith' , 첫번째철자인 1 , 1번째부터 3개를 뽑겠다. ) substr(ename, 2 ) 이런식으로 2 다음에 다음 수를 넣지 않고 괄호를 닫으면 끝까지 읽는 것 입니다. from dual; from 절에 e..
SQL 단일행 함수 - 문자함수 upper,lower,initcap (대소문자) [1] 단일행 함수 ( —> 함수 —> ) 하나의 행이 함수에 입력 되어서 하나의 행으로 출력 되어지는 함수 (1) 문자함수 upper : 대문자 lower : 소문자 initcap : 첫번째 철자만 대문자출력 나머지는 소문자로 출력 예제 : 이름을 소문자, 대문자, 대소문자 로 출력 하세요 select lower(ename), upper (ename) initcap(ename) from emp; 만약 데이터가 너무 방대해서 대문자인지, 소문자인지, 섞여있는지 구분하기 어려울 때에는 where 절에 lower ( 컬럼명 ) like ' % 발췌할단어 % ' ; 를 써서 출력 가능하다. lower (컬럼명) 을쓰거나 upper (컬럼명) 인지는 둘중 하나를 사용하면 된다. 주의사항 : 여기서 와일드카드인 ..