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

主頁 > 知識庫 > 正解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排序(按大小排序)的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 怀宁县| 云浮市| 黑龙江省| 华容县| 靖安县| 石渠县| 文山县| 云龙县| 诸暨市| 子洲县| 桂林市| 临湘市| 灌云县| 安溪县| 于都县| 仪陇县| 阳高县| 全州县| 遂昌县| 南通市| 黎平县| 玉溪市| 新泰市| 上饶市| 调兵山市| 左贡县| 应城市| 北京市| 新安县| 建平县| 永城市| 锦屏县| 普洱| 新蔡县| 鲁山县| 石门县| 休宁县| 兰州市| 武胜县| 介休市| 五峰|