2015-10-19 38 views
3

我是新來使用數據庫的Select語句,使用MySQL

我有一個表(easy_drinks)

+------------+-------------+---------+ 
| Drink_name | main  | amount1 | 
+------------+-------------+---------+ 
| Blackthorn | Blackthorn | 1.5  | 
| BlueMoon | soda  | 1.5  | 
| OhMyGosh | peachnectar | 1  | 
+------------+-------------+---------+ 

我有一個查詢

SELECT Drink_name  
FROM easy_drinks  
WHERE main > 'soda' 
; 

這是給結果Blakcthorn

你能解釋一下字符串比較n發生在主要和'蘇打'之間?

+1

http://stackoverflow.com/questions/8083781/is-it-safe-to-compare-strings-with-greater-than-and-less-than-in-mysql – niksofteng

+1

嘗試'WHERE UPPER (主)>'蘇打'來看看區別。還可以試試'WHERE'蘇打'>'蘇打'。簡而言之,在分類/整理序列中,大寫字母「B」在小寫「s」之後。因此,數據庫中的所有值都需要在其大小寫中保持一致,並且/或者您應該對比較中使用的所有值使用'UPPER()'或'LOWER()'。 – Turophile

+0

它與字符集和整理有關 – Drew

回答

1

它使用字段在一個圖像排列順序中使用的底層值collation比較字符串。這意味着首都在非首都「更大」之前。

注意:如果兩個字符串使用不同的排序規則,則會進行轉換。

如果你不喜歡區分資本和非資本使用類似

SELECT Drink_name  
FROM easy_drinks  
WHERE LOWER(main) > 'soda' 
; 

您也可以使用strcmp功能(參見here)。

SELECT Drink_name  
FROM easy_drinks  
WHERE strcmp(LOWER(main),'soda') = 1 
;