2016-05-30 24 views
1

誰かがこのSQL文をMySQLに変換するのを助けることができますか?MySQLから実行しようとすると構文エラーが発生するためです。SQLからMySQLへのクエリ

SELECT 
    a.userid, 
    CAST(a.checktime AS VARCHAR) AS timein, 
    ISNULL(CAST(b.checktime AS VARCHAR),'NO TIMEOUT') AS timeout 
FROM timein a 
LEFT JOIN timeout b ON a.userid = b.userid 
WHERE ISNULL(CAST(b.checktime),'NO TIMEOUT') = 'NO TIMEOUT' 
+0

IFNULL' – 1000111

+0

'ことでISNULL'が – Jens

答えて

1

SQL-Serverの構文で使用COALESCE()の代わりISNULL()。あなたがcharデータ型としてキャストする必要が

SELECT 
    a.userid, 
    a.checktime AS timein, 
    COALESCE(b.checktime,'NO TIMEOUT') AS timeout 
FROM timein a 
LEFT JOIN timeout b ON a.userid = b.userid 
WHERE COALESCE(b.checktime,'NO TIMEOUT') = 'NO TIMEOUT' 
+0

おかげで、エラーメッセージをくださいますが、それでもvarchar型としてtimein、 COALESCE(CAST(b.checktimeとして、ここCAST(varchar型としてa.checktime)の近くに、構文エラーを取得'置き換え)、 'NO TIMEOUT')ASタイムアウト – Seryu

+0

'checktime'カラムはどのタイプですか? – sagi

+0

私はそれをVarchar – Seryu

1
SELECT 
    a.userid, 
    CAST(a.checktime AS CHAR(100)) AS timein, 
    IFNULL(CAST(b.checktime AS CHAR(100)),'NO TIMEOUT') AS timeout 
FROM timein a 
LEFT JOIN timeout b ON a.userid = b.userid 
WHERE IFNULL(CAST(b.checktime),'NO TIMEOUT') = 'NO TIMEOUT'; 
  • 。 (対応するvarcharカラムの長さはCHAR(LENGTH)にする必要があります)
  • ISNULLISNULL MySQLの関数は1つのパラメータをとりますが、SQL SERVERでは2つ必要です。 IFNULL またはCOALESCE(上記のsagiと同じ)を使用してください。

CAST約注:

CAST()関数は 指定されたタイプを有する値に任意の型の値を変換します。ターゲットタイプは、次のいずれかのタイプのいずれかになります。BINARY、CHAR、DATE、DATETIME、TIME、DECIMAL、SIGNED、UNSIGNED。

関連する問題