1、在mysql中,根據數字字符串排序,會按照和java字符串比較的模式進行(即第一位先比較,相等在比較下一位,以此類推),這樣就會在有些比較的情況下,獲取到不正確的結果,如:2和19,用數字的類型比較應該是19更大,但是兩者類型都是字符串的話,就是2比19更大,所以此時我們想要得到我們需要的結果,就需要轉換類型。
2、常用的轉換類型
- 二進制,同帶binary前綴的效果 : BINARY
- 字符型,可帶參數 : CHAR()
- 日期 : DATE
- 時間: TIME
- 日期時間型 : DATETIME
- 浮點數 : DECIMAL
- 整數 : SIGNED
- 無符號整數 : UNSIGNED
3、CAST方法用法(CAST
(value
as
type)
)
用法如下:
select t.CLASS_NO,t.name,t.grade from edu_class t ORDER BY t.GRADE asc,CAST(t.CLASS_NO AS signed) asc;
4、CONVERT方法(CONVERT
(value, type)
)
用法如下:
select t.CLASS_NO,t.name,t.grade from edu_class t ORDER BY t.GRADE asc,CONVERT(t.CLASS_NO,SIGNED) asc;
兩者效果都如下,可以看到轉換類型後的排序就是我們想要的效果:
5、學海無涯苦作舟,不要急於求成,慢慢沉澱纔是真理!