一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Sql Server - 正解SQLSEVER 2005 sql排序(按大小排序)

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

2020-07-04 15:09sql2005教程網 Sql Server

Insus.NET寫了一個函數,可以方便以后的擴展,如果數值出現TB或是或更高時,可以只改這個函數即可。

今天在論壇上看到一個問題,如下:

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

 

解決這個問題,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])

 

 

執行結果:

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 色哟哟久久 | 娇小8一12xxxx第一次 | 午夜综合网| 秋霞午夜伦午夜高清福利片 | 天美传媒tm0065 | 毛片99 | 日韩xx00 | 婷婷去我也去 | 5566中文字幕亚洲精品 | 掰开逼操 | brazzers欧美教师 | 91精品国产综合久久消防器材 | 丫鬟粗大狠狠贯穿h | 小鸟酱喷水 | 丁香久久婷婷 | 成人综合网站 | 久久精品一卡二卡三卡四卡视频版 | 亚洲激情欧美 | 国产精品每日在线观看男人的天堂 | 黄瓜视频黄 | 九九在线精品亚洲国产 | 欧美一级高清免费a | 欧美日韩一区二区三在线 | 超级碰碰免费视频 | 丰满艳妇亲伦视频 | 欧美高清乌克兰精品另类 | 好猛好紧好硬使劲好大刺激视频 | 9热在线精品视频观看 | 日日舔 | 久久亚洲精品专区蓝色区 | 91麻豆精品国产片在线观看 | 欧美精品日韩一区二区三区 | 国产精品嫩草影院在线 | 亚洲 欧美 日韩 综合 | 国产伦精品一区二区 | 韩国办公室激情 | 娇小异类videos | 91狠狠| 亚洲精品国产专区91在线 | 欧美精选视频 | 国产精品边做边接电话在线观看 |