mysql按字串數字排序處理

2021-10-23 09:47:27 字數 1551 閱讀 8159

公司不知是誰設計的表選單排序字段竟然設定成了字串。

create table `s_menu` (

`id` int(11) not null auto_increment,

`parent_id` int(11) default null,

`order` varchar(5) default null,

`menu_name` varchar(255) default null,

`menu_url` varchar(255) default null,

`menu_icon` varchar(100) default null,

`sort_num` int(2) default null,

`is_show` int(2) default null,

`permission` varchar(100) default null,

`create_by` int(11) default null,

`create_date` date default null,

`memo` varchar(1000) default null,

primary key (`id`)

) engine=innodb auto_increment=254 default charset=utf8 comment='選單';

為了減少**的改動量 

select

`id`,

`parent_id` ,

`order` ,

`menu_name`,

`menu_url` ,

`menu_icon` ,

`sort_num` ,

`is_show` ,

`permission` ,

`login_type` ,

`create_by` ,

`create_date`,

`memo`

from

s_menu

order by

(s_menu.order+0) asc

將字元的數字轉成數字,比如"123"轉成123可以直接用字元數字+0來實現

也可以使用 cast(str as signed)

select

`id`,

`parent_id` ,

`order` ,

`menu_name`,

`menu_url` ,

`menu_icon` ,

`sort_num` ,

`is_show` ,

`permission` ,

`login_type` ,

`create_by` ,

`create_date`,

`memo`

from

s_menu

order by

cast (s_menu.order as signed) asc

mysql 按字串中的數字排序

我們常常在資料庫中用字串型別定義id等型別。而又多以數字編號來做簡單id,當遇到id排序問題時出現如下問題如 id當我們檢索簡單排序時 select id from testtable order by id 結果卻成了這樣 因為沒有找到相關mysql字串數字轉換成數字型別的函式 我記得在oracl...

按字串裡的數字排序

按字串裡的數字排序 給出的字串結構是前邊是字母 後邊為數字,例如wew0145,要求給出一組資料,按照後邊的數字從小到大排序。輸入wr0068,lt01,qhy0027828,gh20425256,xj0033258,zmj00505562 輸出lt01,wr0068,qhy0027828,xj00...

mysql 對整數,字串排序

mysql 在預設情況下使用order by column name desc asc 進行排序的時候,排序規則是按照ascii碼進行排序的 order by 欄位名稱 0 desc asc的形式進行排序 order by 欄位名稱 1 desc asc的形式進行排序 mysql會將字串型別的資料當...