SQL (3)
SQL basic statement -3
숫자내장함수
절대값select abs(12), abs(-12);
부호판별(양수,음수,0)select sign(-4), sign(12), sign(0);
반올림select 123.1234, round(123.1554,-1);
-1은 1의자리에서 반올림.
1은 소수 첫째자리에서 반올림.
올림/내림select 123.123 , ceil(123.123), floor(123.123);
나머지/제곱/최대값select mod(6,4), pow(3,2), greatest(12,13,14,11);
pow(3,2)같은 경우는 3의 2제곱, 즉 9가 결과로 나온다.
greatest는 파라미터들 중에서 가장 큰 수가 결과로 나온다.
랜덤값 추출select floor(mod(rand()*100,45))+1 from dual;
다음 결과는 1~45사이의 임의의 값이 결과로 나온다.
문자내장함수
대문자/소문자select ename, lower(ename), upper(ename) from emp;
문자열 붙이기select concat('abc','drf');
문자열 추출select substr('20180912',7,2);
문자열의 인덱스는 1부터 시작이다.
파라미터가 의미하는 것은 substr('문자열', '추출시작index', '추출할 갯수') 이다.
위의 결과는 12가 된다.
문자열 찾기select instr('20180912','3');
파라미터가 의미하는 것은 instr('문자열', '찾을 문자열') 이다.
내가 찾는 문자열이 없으면 0을 반환하고.
있다면 그 문자열이 시작되는 지점의 인덱스를 반환한다.
중복된 문자열이 존재한다면, 가장 먼저 발견한 인덱스를 반환한다.
'3'과 같은 한글자 뿐만 아니라, '18'과 같은, 말 그대로 문자열의 검색도 가능하다.
위의 예시에서는 '3'대신 '18'을 넣게되면, 18이 시작되는 지점인 3이 반환이 된다.
아스키코드 추출select ascii('1');
파라미터로 들어가 있는 문자의 아스키코드값을 반환한다.
'a'를 넣게되면 97을 반환한다.
istr 사용 예select ename, sal
from emp
where instr(ename,'A') = 0;
emp table 내에서 이름(ename)에 'A'를 포함하지 '않은' 결과(이름과 급여)를 출력한다.
substr & instr 활용 예
@앞부분만 추출하기select substr('ssafygood@multicamus.com',1, instr('ssafygood@multicamus.com','@')-1);
@뒷부분만 추출하기select substr('ssafygood@multicamus.com',instr('ssafygood@multicamus.com','@')+1);
추출시작지점을 정해주고, 추출할 갯수를 지정하지 않으면 끝까지 추출하게 된다.
select ename, lpad(ename,10,''),rpad(ename,10,'') from emp;
select length(lpad(ename,10,' ')), length(trim(lpad(ename,10,' '))) from emp;
select length(trim(' a bcd ')) ;
'Database > SQL' 카테고리의 다른 글
[MySQL] SQL (2) basic statement (0) | 2019.08.18 |
---|---|
[MySQL] SQL (1) basic statement (0) | 2019.08.17 |