2012-11-12 59 views
21

如果我通過:MYSQL案例在MySQL查詢檢查零

case guides.Gud_Publish_Date 
    when null then "Unscheduled" 
    else "Forth Coming Titles" 
    end 

則考慮所有爲空連Gud_Publish_Date具有價值也。完整的SQL語句是

SELECT guides.Gud_Id 
    , guides.Gud_Image 
    , guides.Gud_SubEditor 
    , guides.Gud_Reprint_Status 
    , guides.Gud_Publish_Date 
    , guides.Gud_Img_Chk 
    , guides.Gud_Published 
    , guides.Gud_View 
    , (
     CASE guides.Gud_Publish_Date 
      WHEN NULL 
       THEN "Unscheduled" 
      ELSE "Forth Coming Titles" 
      END 
     ) AS Schedules 
FROM guides 

任何人都可以幫助我嗎?在此先感謝

+2

瑣碎,但我相信即將到來的是一個詞。 – marvin

+0

[Conditional NOT NULL case SQL]可能的重複(http://stackoverflow.com/questions/4821031/conditional-not-null-case-sql) – nawfal

回答

44

嘗試使用IF

SELECT guides.Gud_Id 
    , guides.Gud_Image 
    , guides.Gud_SubEditor 
    , guides.Gud_Reprint_Status 
    , guides.Gud_Publish_Date 
    , guides.Gud_Img_Chk 
    , guides.Gud_Published 
    , guides.Gud_View 
    , IF(guides.Gud_Publish_Date IS NULL,'Unscheduled','Forth Coming Titles') 
      AS Schedules 
FROM guides 

,或者如果你真的想CASE

SELECT guides.Gud_Id 
    , guides.Gud_Image 
    , guides.Gud_SubEditor 
    , guides.Gud_Reprint_Status 
    , guides.Gud_Publish_Date 
    , guides.Gud_Img_Chk 
    , guides.Gud_Published 
    , guides.Gud_View 
    , (
     CASE 
      WHEN guides.Gud_Publish_Date IS NULL 
      THEN 'Unscheduled' 
      ELSE 'Forth Coming Titles' 
     END 
    ) AS Schedules 
FROM guides 
+0

顯示錯誤 /* SQL錯誤(1064):您有一個錯誤在你的SQL語法中;檢查與您的MySQL服務器版本相對應的手冊,以便在第3行附近使用'guides.Gud_Publish_Date IS NULL','Unscheduled','Forth Coming Titles'')作爲附表'使用的正確語法*/ 但是,Case語句正在工作。 感謝您的幫助 – user1023242

+0

您真的在使用'mysql'嗎? :D,因爲我提供的代碼都工作。 –

+0

[MySQL中的Inline IF和CASE語句:*請單擊此處*](http://timmurphy.org/2009/08/13/inline-if-and-case-statements-in-mysql/) –

2
SELECT guides.Gud_Id 
    , guides.Gud_Image 
    , guides.Gud_SubEditor 
    , guides.Gud_Reprint_Status 
    , guides.Gud_Publish_Date 
    , guides.Gud_Img_Chk 
    , guides.Gud_Published 
    , guides.Gud_View 
    , (
     CASE WHEN guides.Gud_Publish_Date IS NULL 
      THEN "Unscheduled" 
      ELSE "Forth Coming Titles" 
      END 
     ) AS Schedules 
FROM guides 
-2

試試這個

SELECT guides.Gud_Id 
    , guides.Gud_Image 
    , guides.Gud_SubEditor 
    , guides.Gud_Reprint_Status 
    , guides.Gud_Publish_Date 
    , guides.Gud_Img_Chk 
    , guides.Gud_Published 
    , guides.Gud_View 
    , coalesce((
     CASE guides.Gud_Publish_Date 
      WHEN NULL 
       THEN 'Unscheduled' 
      ELSE 'Forth Coming Titles' 
      END 
     ), 'Unscheduled') AS Schedules 
FROM guides 
+1

這不起作用。當NULL時,CASE表達式會錯過條目並返回'Forth Coming Titles';因爲它不是NULL,所以COALESCE返回相同的值。 – Diego

5

我發現這個-a情侶幾個月的職位。使用COALESCE選項,意在通過拉詹,你可以做,

SELECT guides.Gud_Id 
    , guides.Gud_Image 
    , guides.Gud_SubEditor 
    , guides.Gud_Reprint_Status 
    , guides.Gud_Publish_Date 
    , guides.Gud_Img_Chk 
    , guides.Gud_Published 
    , guides.Gud_View 
    , CASE COALESCE(guides.Gud_Publish_Date, 0) 
      WHEN 0 THEN 'Unscheduled' 
       ELSE 'Forth Coming Titles' 
      END AS Schedules 
FROM guides 

上面的代碼假定guides.Gud_Publish_Date不能取0個,這是我能做到,因爲它是一個日期。如果不是這種情況,你可以將0改爲另一個不能用的值;也許你最喜歡的浮點數如3.1415或空標識符'null'

+0

清潔,安全,直觀閱讀。 ++ – SteveCinq