LoginSignup
7
9

More than 5 years have passed since last update.

MS SQL(SQLServer)からMySQLへ書き換える時に注意しておきたい3つのこと

Last updated at Posted at 2015-07-09

MicroSoft SQL Serverのライセンス切れなどにより、他のDBにサービスを移行することがある。
他のDBに乗り換えを考えた時に、候補に上がるのはMySQLが多いと考えられる。

本記事では、MS SQLからMySQLへ書き換えを行うときに気をつけるポイントを5つ3つまとめた。

1. GETDATE()

現在の日付を基準に検索を行うことは多々ある。
MS SQLではGETDATE()で現在の日時を取得している。
MySQLではNOW()で取得できる。
例えば、本のDBで出版されている本(=出版日時が現時刻より前)のものを取得する場合
MS SQL

SELECT
    title,
    auther,
    publisher,
    price,
    published_datetime,
    created_datetime,
    modified_datetime
 FROM
   books
 WHERE
   published_datetime <= GETDATE()

MySQL

SELECT
    title,
    auther,
    publisher,
    price,
    published_datetime,
    created_datetime,
    modified_datetime
 FROM
   books
 WHERE
   published_datetime <= NOW()

2.文字列結合

SELECT してきたものにprefixとして何か付けたい場合に文字列結合を使うことがある。
例えばSQLだと、
SQL Server

SELECT
    '本のタイトル:'+title,
    '著者:'+auther,
    publisher,
    price,
    published_datetime,
    created_datetime,
    modified_datetime
 FROM
   books
 WHERE
   published_datetime <= GETDATE()

のように+で文字列結合ができる。
MySQLの場合はCONCATを使う必要がある。

MySQL

SELECT
   CONCAT('本のタイトル:', title),
   CONCAT('著者:', auther),
    publisher,
    price,
    published_datetime,
    created_datetime,
    modified_datetime
 FROM
   books
 WHERE
   published_datetime <= NOW()

3. 行数のNUM_ROWS

SQLでは、取得した結果が何行目かをNUM_ROWSを使うことで取得ができる。

SQL Server

SELECT
    NUMROWS,
    '本のタイトル:'+title,
    '著者:'+auther,
    publisher,
    price,
    published_datetime,
    created_datetime,
    modified_datetime
 FROM
   books
 WHERE
   published_datetime <= GETDATE()

MySQLには組み込み関数がない。
しかたがないためMySQLのユーザ定義変数を使用する。
例えば

MySQL

set @row_number:=0;
SELECT
    (@row_number:=@row_number + 1) AS row_number,
    '本のタイトル:'+title,
    '著者:'+auther,
    publisher,
    price,
    published_datetime,
    created_datetime,
    modified_datetime
 FROM
   books
 WHERE
   published_datetime <= NOW()

のようにユーザ定義変数を使用するとrow_numberが増加していき、行数と同じになる。

7
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
9