본문 바로가기
Programing/DataBase

[DB] MS-SQL 을 MY-SQL로 변경할때 참고할 사항

by 슈퍼와이비 2014. 6. 17.
반응형

1. select top (100) Percent * from table

    Select 검색 시 표시 하고자 하는 목록 수를 제한 할때 Top를 사용하는데 'Percent'를 적용하여 전체 목록에 백분율을 적용해 볼수도 있다.

MySql ==>없음.. 검색 해 보니 어떤분이 직접 쿼리를 작성하신 분이 계신듯 한데.. 전 그냥 무시.

               Mysql 에서는 'Limit' 사용하여 범위를 지정 할 수 있음

               예) select * from table limit 5, 10 (5 번부터 10 개)

 

2. convert(varchar(10), GetDate() 또는 date_column, 121(시간 표시 형태)) 뭐징??

   날짜를 출력 하는 MSSQL 함수 (2013-03-18 16:08:25.123) 로 첫번째 인자로 인하여 10자리까지만 출력이 됨..

MySql ==>date_format(now() 또는 date_column, '%Y-%m-%d %T') 식으로 해주면 됨. (Y-m-d T 대소문자에 주의 하자)

(MsSql) convert(변환 자료형 , 값 )

(MySql) convert(값 , 변환 자료형 ) 사용법은 같으나 인자 위치가 다르다.(varchar ==> char)

 

3. REPLICATE('0', 10)

   첫 인수를 두번째 인수만큼 문자열로 만들어준다.

 

MySql ==> 에서는 없음. 함수로 직접 등록

DELIMITER $$

CREATE FUNCTION REPLICATE(charvar TEXT, intvar INT) RETURNS TEXT

BEGIN 

DECLARE nCnt INT DEFAULT 0;

DECLARE char_string TEXT DEFAULT ''; 

 WHILE (nCnt < intvar) DO  

  SET char_string = CONCAT(char_string, charvar);

  SET nCnt = nCnt+1;

 END WHILE;  

 RETURN char_string;

END $$

DELIMITER;

 

4. LEN( ), CAST(Int_column AS VARCHAR)

    Int_column 컬럼의 값을 문자로 변환 후 문자열 길이를 얻기.

    참고) LEN() => 문자열의 길이 'aa' =>2, '안녕' => 2

            DataLength() => 바이트의 크기 'aa' => 2, '안녕' => 4

  MySql ==> LENGTH( CAST(Int_column AS CHAR) )

LEN => LENGTH() 변경 (바이트의 크기를 반환함)

CAST : 변경 타입이 바뀜 (binary, char, date, datetime,decimal, signed, unsigned, time)

 

 5. ROW_NUMBER() OVER(Order by column_name)

    Over(column_name)에 의해 정렬된 순서대로 번호 생성

  MySql ==> (SELECT @rownum:=@rownum+1 as index , T.* FROM (select @rownum:=0) as rownum_init , 

information_schema.tables as T where ....... order by ...

    함수로는 지원하지 않으며 위와 같이 쿼리 호출 시 해당 명령을 추가해 추면 된다.

참고) View 에서 'rownum' 값을 얻고자 할 경우에는 'from' 절에 Select가 위치 할 수 없는 제약 조건으로 생성할 수 없다.

이럴 경우 프로시져를 만들어 호출 하는 방법으로 바꿔야 할 듯 싶다.

 

6. DATEDIFF(추출단위, 뺄 값, 대상 값)

    MsSql => 3 가지의 인자가 필요 하며 대상 값에서 뺄 값을 뺀 후 추출단위에 맞게 값을 리턴한다.

      추출단위 : year, month(m), day(d), hour, minute(mi), second(s)

        select DATEDIFF(d, '2013-03-19', '2013-03-20') ==> 1

        select DATEDIFF(second, '10:00:00', '10:00:10') ==> 10

        참고) 'getdate() + 1' 을 하면 하루가 더해진 값이 나온다.

 

  MySql => DATEDIFF(대상 값, 뺄 값), TIMEDIFF(대상 값, 뺄 값)

    mysql 날짜와 시간 계산 하는 함수가 따로 있음.

      select DATEDIFF('2013-03-20', '2013-03-19') => 1 (결과 값은 Day 기존)

      select TIMEDIFF('10:00:20', '10:00:00') => 00:00:20

      시간의 경우 각 단위로 전환 해주는 함수가 별도로 있음. HOUR(), MINUTE(), SECOND();

        select HOUR(TIMEDIFF('10:00:20', '10:00:00')) => 0

        select SECOND(TIMEDIFF('10:00:20', '10:00:00')) => 20

 

7. ISNULL(값1, 값2)

   MsSql => '값1' 이 'NULL' 이면 '값2' 를  반환한다. (둘다 NULL 이면 NULL 반환)

   MySql => ISNULL(값1) '값1' 이 NULL 이면 1, 아니면 0

   MySql => IFNULL(값1, 값2) 가 MsSql 의 ISNULL() 과 같은 기능

반응형