DataBase
[오라클을 MYSQL로 바꾸기] oracle의 ROWNUM은 mysql에서는 @을 통해 변수를 생성하여 사용한다.
이영서
2022. 8. 16. 10:01
**mysql과 mariadb는 문법이 같다.
1.mysql, mariadb에서는 ROWNUM을 지원하지 않기때문에
@을 통해 변수를 생성하여 사용한다.
변수의 초기화는 from절 , where절에서 사용한다
SELECT @ROWNUM :=ROWNUM+1 AS ROWNUM
FROM 테이블명, (SELECT @ROWNUM:=0) AS R
또는
WHERE절에서 초기화 후 사용
SELECT @ROWNUM:=@ROWNUM+1 AS rowNum
FROM 테이블명
WHERE (@ROWNUM:=0)=0;
[문자열 합치기] : Mysql에서는 CONCAT함수를 사용해야한다.
- SELECT CONCAT('a', 'b', 'c');
=> abc - 오라클에서는 파이프('||') 를 이용해서 문자열을 결합하면 된다.
[날짜포맷]
- 오라클 : TO_CHAR(변수명, 'YYYY-MM-DD HH:24:MI:SS')
마리아디비 : DATE_FORMAT(변수명, '%Y-%m-%d %H:%i:%p');
결과값 : 2021-08-11 17:33:43
DATE_FORMAT(변수명, '%Y-%m-%d %h:%i:%p');
일경우
결과값 : 2021-08-11 05:35:30(am,pm으로나옴)
SELECT DATE_FORMAT(now(), '%Y-%M-%D');
일경우
결과값 : 2021-August-11th
[DECODE, CASE]
DECODE 함수는 조건에 따라 데이터를 다른 값이나 컬럼값으로 추출할 수 있다.
특정 조건이 참/거짓일때 각각 다른 값을 부여한다.
SELECT DECODE (테이블명, 조건, 참일 때 출력 값, 거짓일때 출력 값) FROM 테이블명;
CASE
해당조건에 만족하는 결과값을 출력한다.
SELECT CASE WHEN 조건1 THEN 결과1
ELSE 외의 결과
END
FROM 테이블명;