正解SQLSEVER 2005 sql排序(按大小排序)

2016-02-19 09:50 5 1 收藏

给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习图老师推荐的正解SQLSEVER 2005 sql排序(按大小排序),过去的都会过去,迎接崭新的开始,释放更美好的自己。

【 tulaoshi.com - 编程语言 】

今天在论坛上看到一个问题,如下:

解决这个问题,Insus.NET写了一个函数,可以方便以后的扩展,如果数值出现TB或是或更高时,可以只改这个函数即可。
代码如下:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[udf_OrderLimitSize]
(
@Ov NVARCHAR(30)
)
RETURNS decimal(18,6)
AS
BEGIN
--如果长度少于等于2的数值为返回NULL
IF (LEN(@Ov) = 2)
RETURN NULL
--宣告两个变量
DECLARE @v DECIMAL(18,6),@n DECIMAL(18,6)

--判断最后两位数是否为下面这些单位
IF (RIGHT(@Ov,2) NOT IN ('TB','GB','MB','KB'))
RETURN NULL
--去掉最后两位数之后,把值转为DECIMAL数据类型
SET @n = CONVERT(DECIMAL(18,6),LEFT(@Ov, LEN(@Ov) - 2))
--判断截除最后两位数之后,使用ISNUMERIC判断是否为有效的数值,如果不是返回NULL
IF (ISNUMERIC(@n) = 0)
RETURN NULL
--下面做单位转算,如果遇上有新单位时,可以作相应添加
IF (@Ov LIKE '%TB')
SET @v = @n * 1024 * 1024 * 1024
IF (@Ov LIKE '%GB')
SET @v = @n * 1024 * 1024
IF (@Ov LIKE '%MB')
SET @v = @n * 1024
IF (@Ov LIKE '%KB')
SET @v = @n
RETURN @v
END

下面为了应用这个函数,例举例子:
代码如下:

CREATE TABLE test(id int identity(1,1),size NVARCHAR(50))
GO
INSERT INTO [test] values('23.5mb'),('10gb'),('12.7mb'),('8GB')
go
SELECT [id],[size] FROM test ORDER BY [dbo].[udf_OrderLimitSize]([size])

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

执行结果:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

来源:http://www.tulaoshi.com/n/20160219/1592306.html

延伸阅读
排序的含义 排序是指根据一组物体的某种特性的差异或按某种规则,按序进行排列。 排序锻炼宝宝逻辑思维能力 排序活动是培养幼儿逻辑思维能力的有效途径,幼儿通过排序活动,可以获得按序排列物体的经验,在思维中逐渐建立起序列结构,帮助幼儿理解数的顺序,促进幼儿的可逆性、传递性、双重性思维能力的发展,引导孩子...
假设有一组数字 1~1000,请将它们随机填充在一个数组中 要求: 1、数组中 2、整个程式运算很快! william 兄解答 varNums: array[1..1000] of integer;i,j,k,temp: integer;beginfor i := Low(Nums) to High(Nums) doNums[i] := i;for i := 0 to 1000 do begin // 1001 round may not be enoughj := random(High...
标签: 电脑入门
杨过自从被郭靖送上全真教并拜赵志敬为师后,赵志敬将在郭靖上受的气一股脑发泄在了杨过身上.不仅不教杨过武功,而且还派给他无数的重体力活。杨过每天只有背那几句口诀心法,完全没有学到一招半式的武功。 文字擂台:杨过被欺压 WPS显威力 每年一度检验弟子学艺情况的比试到了,首先对阵的就是杨过和平时欺压他成为习惯的大师兄清笃。在...
陌陌表情排序   进入我的表情点击编辑,按住并上下移动,即可按照自己的需求进行表情排序。 如图示:
功能要求如下: 排序算法比较: shellsort, quicksort, heapsort, mergesort 的算法实现 , 对同样数据集的排序时间比较。 源代码: # include stdio.h # include time.h # define MAXSIZE 2000 typedef struct{ int key[MAXSIZE]; int length; }list; long int compCount; long int shiftCount; void menu(...

经验教程

532

收藏

17
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部