Database/SQL

[MySQL] SQL (3) basic statement

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