1. 程式人生 > >SQLSTATE[42S22]: Column not found: 1054 Unknown column '1' in 'field list' -- IF查詢出錯

SQLSTATE[42S22]: Column not found: 1054 Unknown column '1' in 'field list' -- IF查詢出錯

mysql IF() 查詢的時候出現這個錯誤
場景: user表 age欄位,查詢並輸出欄位 is_adult (0表示未成年,1表示已成年)
查詢語句如下:

SELECT IF( age>18, 1, 0 ) as is_adult FROM user;

錯誤原因:預設返回值型別是任何返回值的相容集合型別,但具體情況視其所在語境而定。如果用在字串語境中,則返回結果味字串。如果用在數字語境中,則返回結果為十進位制值、實值或整數值。
根據上述原因分析,age>18 應該算是字串語境,返回型別預設為字串,但是1 ,0 都不是字串,而是整型。

修改方案一:輸出換為字串型

SELECT
IF( age>18, '1', '0' ) as is_adult FROM user;

修改方案二:強制選擇整型

SELECT IF( age>18, (select 1), (select 0) ) as is_adult FROM user;