sql排序 按数字大小 不是字符型

我在VB中用ADO编程时,查询语句
select yaopin.药品名称,sum(chufangmingxi.数量) as 销售数量,sum(chufangmingxi.单价*chufangmingxi.数量) as 销售金额,...order by 2
上面的写法可以,但是并没有按 销售数量 的多少排序,而是将销售数量看成了字符型进行排序的,请部怎样按数值型排序?
系统排序的是
1,2,23,245,25,3
我需要的是
1,2,3,23,25,245

今天看到Mysql的 Cast和Convert函数。发现这个还是与别的数据库有些区别的。
两者具体的语法如下:
Cast(value as type); Convert(value ,type);
type不是都可以滴,可以转换的type如下:
二进制,同带binary前缀的效果 : BINARY
字符型,可带参数 : CHAR()
日期 : DATE
时间: TIME
日期时间型 : DATETIME
浮点数 : DECIMAL
整数 : SIGNED
无符号整数 : UNSIGNED

Cast的具体用法
SELECT *
FROM `phome_ecms_info`
WHERE comicid =103534
ORDER BY CAST( `title` AS DECIMAL ) ASC
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-03-09
select yaopin.药品名称,sum(chufangmingxi.数量) as 销售数量,sum(chufangmingxi.单价*chufangmingxi.数量) as 销售金额,...order by sum(chufangmingxi.数量)
第2个回答  2012-03-08
先按长度后按内容排序
order by len(销售数量),销售数量
第3个回答  2007-04-08
应该是ORDER BY 你想排序的列名 ASC或DESC(好像是这两个英文吧,忘记了)

Sql Server 列中的数据有的是字母,有的是数字,要求先数字,后字母排序...
如果数字都是小于10的,可以直接order by,按照字符规则排序就是你想要的这个。如果数字有两位以上的,这时候11会排在2的前面,如果想数字按照数字的规则排序,字母按照字母的规则排序,需要根据条件将数字和字母分别查询出来进行排序,然后使用union all联接出结果。WITH tbtemp AS (SELECT '0' AS numUN...

Sql 2000中的数据的排序问题
order排序可以数字或者字符的,但是字符就按照大小排的, 你试一下这个语句: SELECT * FROM table1 ORDER BY CAST(SUBSTRING(主键, 2, 10) AS int) \/\/去掉前缀的T,从第二个数字开始

sql数据库数字排序问题
假如你要排序的字段名为 mynum,如果 mynum 是 int 型,直接排序即可: order by mynum 如果 mynum 是 string 型,但存的是数值,并且要出现你说的自然排序效果的话,要这样做: order by mynum+0

sql 排序
加一列计算列sort_id,sort_id在col长度大于1时,前面加9,否则就等于col。oracle的写法:select col,case when length(col)=1 then col when length(col)>1 '9'||col sort_id from t order by sort_id asc 这种做法只是解决楼主的问题,只是一个头疼医头脚疼医脚的做法。不具有普遍性。...

sql中用日期字符串格式排序会乱
sql中用日期字符串格式排序会乱的原因是:1、可以以多种格式编写。2、SQL使用数字(而不是字符串)来比较和排序日期值。

sql 字符与数字排序
Sql给你,分给我 转换asc码,简洁方便 1是49 a是97 z就是123 只要让数字的码都大于字母就可以了,73是可以根据情况改的,要是有大写情况,也能处理 select Id from a order by (case when isNumEric(Id)=1 then ascii(Id)+73 else ascii(Id) end)...

sql中的排序错乱了是怎么回事啊?
如果你的 0001-9010数据类型是字符串型 那排序 肯定不是按 0001-9010排序的,你试一下把数据类型改成int型

SQL 排序疑问
这是因为你的这一列中输入的字符类型不一致引起的,有的为字符,有的为数字。要想按一种1,2,3,4,5,6...60,61,62... 100 排序的话你只需要把他们转换成一种类型再排序即可!如 sql server select * from 表名 order by convert(int,字段名)或 select * from 表名 order by convert(...

sql 字符串 排序
如果是以数字开头,不确定字母位数,用下面这个.把表名和字段替换成你自己的.SELECT * FROM 表名 ORDER BY isnull(STUFF( 列1 ,PATINDEX('%[a-z]%', 列1 ),LEN( 列1 ) - 1,''), 列1 )字段内容可以为以数字开头的任意数字 + 英文字母(不区分大小写)组合:1234a,452EG,5694dfddfd,...

sql语句问题:像这样的字符串字段里含有数字还有汉字的如何使他们按照数...
把数据做一次清理。提取数据里你需要进行排序的数据放在一个新字段里 查询时按提取的字段进行排序即可。注意数据类型哈 祝好运,望采纳。

相似回答