2014-03-03 28 views
0

是否有可能在mysql中這樣做: SELECT foo, bar, (created_at > '2012-12-12' ? 'actual': 'old') FROM table;,有沒有一個函數可以讓我做到這一點?有沒有一種方法可以在mysql查詢上應用一種三元運算符?

+1

要麼['CASE'](https://dev.mysql.com/doc/refman/5.0/en/case.html)(標準SQL)或['IF'](https:// dev .mysql.com/DOC/refman/5.0/EN /控制 - flow-functions.html#function_if)(特定於MySQL)應該這樣做。 –

+1

ANSI標準方法是'case'。 –

回答

1

IF是你想要做什麼的(略)更詳細的方式:

SELECT foo, bar, IF(created_at > '2012-12-12','actual','old') FROM table; 
1

您可以使用IF這是MySQL的具體;

SELECT foo, bar, IF(created_at > '2012-12-12', 'actual', 'old') 
FROM table1 

(SQLFiddle)

...或者你可以使用CASE這是ANSI標準,可以跨幾乎任何SQL方言(ORACLE/SQL服務器/ PostgreSQL的/ ...)

SELECT foo, bar, CASE WHEN created_at > '2012-12-12' 
         THEN 'actual' 
         ELSE 'old' 
       END 
FROM table1 

(SQLfiddle)

相關問題