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함수를 사용해야한다.

  1. SELECT CONCAT('a', 'b', 'c');

    => abc
  2. 오라클에서는 파이프('||') 를 이용해서 문자열을 결합하면 된다.

[날짜포맷]

  1. 오라클 : 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 테이블명;