2016-05-30 34 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

更換'ISNULL'通過'IFNULL' – 1000111

+0

添加錯誤消息請 – Jens

回答

1

使用COALESCE()代替ISNULL()這是SQL-Server語法。

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

感謝,但仍然得到語法錯誤在這附近CAST(a.checktime爲varchar)AS timein, COALESCE(CAST(b.checktime爲varchar ),'NO TIMEOUT')AS timeout – 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'; 
  • 你需要轉換爲char數據類型。 (您需要將相應的varchar列的長度放在CHAR(LENGTH)中)
  • ISNULL函數在MySQL中需要一個參數,而在SQL SERVER中需要兩個參數。您應該使用IFNULLCOALESCE(如上所述)。

備註CAST

的CAST()功能的任何類型的值轉換成具有 指定類型的值。目標類型可以是以下任何一種 類型:BINARY,CHAR,DATE,DATETIME,TIME,DECIMAL,SIGNED,UNSIGNED。