校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 正解SQLSERVER 2005 sql排序(按大小排序)

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

熱門標簽:沈陽智能外呼系統代理 電銷機器人虛擬號碼 九鹿林外呼系統怎么收費 松原導航地圖標注 海南自動外呼系統價格 浙江地圖標注 滄州營銷外呼系統軟件 創業電銷機器人 舞鋼市地圖標注app

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

 

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

執行結果:

您可能感興趣的文章:
  • SQL SERVER數據庫重建索引的方法
  • sqlserver實現更改字段名
  • SQLServer導入數據圖文方法
  • SQL Server 2005 Express 安裝失敗解決辦法
  • SQL Server2008r2 數據庫服務各種無法啟動問題的解決辦法(詳解)

標簽:日喀則 寶雞 公主嶺 咸寧 商洛 臺灣 西藏 海口

巨人網絡通訊聲明:本文標題《正解SQLSERVER 2005 sql排序(按大小排序)》,本文關鍵詞  正解,SQLSERVER,2005,sql,排序,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《正解SQLSERVER 2005 sql排序(按大小排序)》相關的同類信息!
  • 本頁收集關于正解SQLSERVER 2005 sql排序(按大小排序)的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 永昌县| 井陉县| 策勒县| 登封市| 个旧市| 泰顺县| 于都县| 启东市| 会同县| 葫芦岛市| 凉山| 永新县| 方正县| 泌阳县| 榆树市| 高雄市| 凤凰县| 南木林县| 龙泉市| 息烽县| 曲麻莱县| 京山县| 汕尾市| 天长市| 扶沟县| 中江县| 仪征市| 察隅县| 邹平县| 鹰潭市| 金门县| 汾西县| 炉霍县| 施甸县| 安塞县| 治县。| 柏乡县| 红河县| 车致| 五常市| 蓬莱市|