2016-12-15 69 views
1

我想檢查posgtres查詢,在我的表中的情況下兩個條件一個字段可能有兩個值或者將爲空或將單引號('')所以我嘗試此查詢,但沒有執行空欄或空字段檢查在rails中的postgres查詢

CASE WHEN (items.item_code is NULL OR items.item_code = '') THEN 
items.name::text ELSE items.item_code::text END as item_code 

錯誤,如:

PG::Error: ERROR: syntax error at or near ")" LINE 1: ...HEN (items.item_code is NULL OR items.item_code =) THEN ite..

+1

「空或單引號」,你的意思是'NULL'或空字符串?因爲單引號是完全不同的東西。 – sagi

+1

「它沒有執行」;什麼是錯誤? – Marth

+0

錯誤,如PG ::錯誤:錯誤:語法錯誤在或接近「)」 LINE 1:... HEN(items.item_code爲NULL或items.item_code =)然後... – amtest

回答

1

你有問題,在紅寶石引號,而不是在SQL語句。 嘗試更改爲:

CASE 
    WHEN (coalesce(length(items.item_code),0) + length(items.item_code)) < 1 
    THEN items.name::text ELSE items.item_code::text 
END as item_code 

上面的代碼做同樣的條件檢查你的,布塔空隙用引號。我想你可能應該像這樣:

CASE WHEN (items.item_code is NULL OR items.item_code = \'\') THEN 
items.name::text ELSE items.item_code::text END as item_code 
+0

第二個工作正常,這是報價問題,謝謝 – amtest