2013-04-10 92 views
1

我有一個像使用枚舉的mysql查詢與= 1和='1'的區別是什麼?

SELECT name, town FROM clients WHERE course = 1; 

查詢,它給了我一定的成效。

但我注意到查詢沒有輸出最新的條目。我期待與phpMyAdmin的表客戶,我看到更多的課程領域與價值1 後我改變了查詢

SELECT name, town FROM clients WHERE course = '1'; 

我得到了正確的輸出。

我的問題:這是爲什麼?爲什麼我用第一個查詢得到一些結果?

ps:當然是一個枚舉字段('0','1')。

+0

我相信沒有引號,你查詢TRUE,雖然與報價你去''' – user1914292 2013-04-10 08:25:19

+0

tx user194292完全匹配,我得到那部分,但作爲我的第一個查詢給了我結果/輸出我didn'意識到這是錯誤的。顯然它給了一個索引(參見Marty McVry的回答) – alex 2013-04-10 09:19:58

回答

3

1是一個整數值,或者是'TRUE',或者...(模棱兩可),而'1'是一個字符串值。

MySQL-documentation解釋了ENUM型:

的ENUM是選自在表創建明確地列舉在列 說明書 允許值的列表中選擇的值的字符串對象時間。

[...]

如果您希望使用一個號碼作爲枚舉值,則必須用 它在引號。如果省略引號,則將 視爲索引。由於這個原因和其他原因(如本節後面的 所解釋的),我們強烈建議您不要使用數字作爲 枚舉值。

因此,ENUM是一個字符串對象,因此您需要將其作爲字符串引用。

+0

好了,這很明顯,但爲什麼我得到的結果/輸出與第一個查詢?它在31個結果後停止顯示輸出? note2myself:不要使用數字作爲enumaration – alex 2013-04-10 09:17:48

+0

它會比較索引值爲1,我想是'0'。 – 2013-04-10 11:58:44

相關問題