公司不知是誰設計的表選單排序字段竟然設定成了字串。
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會將字串型別的資料當...