2011-05-27 71 views
4

所以我是SQL的新手(一般是腳本/編碼),這是來自本書中的一個例子,但不幸的是,他們決定不會有任何關於這個查詢的問題,並忽略了到附近的查詢爲什麼'>'與SQL中的VARCHAR數據有效比較?

這裏結束對「>」擴大是有問題的查詢:

SELECT * 
    FROM easy_drinks 
WHERE main > 'soda'; 

下面是幾個查詢的引擎收錄,希望給需要的角度來看:http://pastebin.com/xfJQsBvU

DESC粘貼easy_drinks:http://pastebin.com/LZZPhk6Z

我只是因爲查詢結尾處的'>'如何工作而感到困惑,因爲main存儲爲VARCHAR,'soda'絕對不是可以與另一個整數進行比較的整數。但是,正如您在第一個pastebin中看到的,查詢成功完成。爲什麼MySQL不返回錯誤,使用'>'和'<'的不同查詢背後的模式是什麼?

回答

0

您經常會發現>關於字符串的關係,主要用於字母順序,但它當然是依賴於實現的,並且對於不同的語言/編碼或大寫和小寫問題可能會有所不同。

+0

在一個理想的SQL實現中,您可以定義一個從'VARCHAR'繼承的類型(在SQL中稱爲'DOMAIN'),並重載它的操作符,包括'>'。 – onedaywhen 2011-05-27 06:29:02