MySQL中欄位varchar和int排序的區別

2021-07-30 22:24:41 字數 384 閱讀 4256

首先我們建立乙個簡單的資料表,這個表只有兩個字段,id和a,a欄位的型別是int型別。

我先的需求是對a欄位進行正序排列

select * from

`test`

order

by`a`

asc;

這個時候我們得到了想要的資料,如下圖

可是小童鞋,將a欄位建成了varchar型別,這個時候我們正序查詢,結果如下圖

這個時候我們發現資料不是按照我們想要的順序進行排練,而是按照第一位的數值大小進行排列,其實原因很簡單,正如人的書寫習慣,從左往右,字串的比對也是從左往右,逐一進行大小比對,21作為字串而不是整形數字時,它的首位2要比1大,所以作為最大字元被排列在了最後。

Mysql中萬能的varchar欄位

很久以前,就見過乙個架構師設計資料庫時所有欄位都使用varchar型別,當時以為方便儲存和遷移,今天自己在設計欄位的時候想起了這件事情,就驗證了一下,mysql中的varchar型別,差不多能算是個萬能型別。例如 1.需要設計乙個datetime欄位型別,方便以後按時間檢索,這時可以使用varcha...

mysql 查詢varchar型別字段排序

首先,如果裡面存的是字母,會按 英文本母 順序排序,如果含有數字,按數字大小排序,如果含有漢字,按照所選擇的 漢字編碼 排序。一般情況下,int型別的字段可以直接使用max 函式查詢出某一列的最大值,但是對於varchar型的字段,我們有的時候需要排序或查最大值,直接用max 函式查最大值,會發現值...

Mysql的 VARCHAR欄位最大長度到底是多少

mysql5.0.3之前varchar n 這裡的n表示位元組數 mysql5.0.3之後varchar n 這裡的n表示字元數,比如varchar 200 不管是英文還是中文都可以存放200個 注 這兩個是完全不一樣的單位,位元組表示字元佔的多少k,字元表示乙個完整的字元 mysql要求乙個行定義...