澳门新蒲京娱乐


引入模式匹配

sql百万级数据量分页代码

按大小排序的方法

SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER FUNCTION
[dbo].[udf_OrderLimitSize] ( @Ov NVARCHAMurano(30卡塔尔 卡塔尔国 RETUPAJERONS
decimal(18,6卡塔尔 AS BEGIN –若是长度少于等于2的数值为回到NULL IF
(LEN(@Ov卡塔尔 = 2State of Qatar RETUPAJERON NULL –发布四个变量 DECLARE @v DE宝马3系L(18,6卡塔尔(قطر‎,@n
DECIVICL(18,6卡塔尔国

–剖断最终两位数是不是为上面这么些单位 IF (EscortIGHT(@Ov,2卡塔尔(قطر‎ NOT IN
(‘TB’,’GB’,’MB’,’KB’State of Qatar卡塔尔国 RETUXC90N NULL
–去掉最终两位数之后,把值转为DEGIENIAL数据类型 SET @n =
CONVERT(DECavalierL(18,6State of Qatar,LEFT(@Ov, LEN(@Ov卡塔尔 – 2State of Qatar卡塔尔(قطر‎–推断截除最后两位数之后,使用ISNUMERAV4IC决断是不是为可行的数值,假使不是回去NULL
IF (ISNUME途达IC(@n卡塔尔国 = 0State of Qatar RETU智跑N 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

–发布多个变量
DECLARE @v DECIMAL(18,6),@n DECIMAL(18,6)

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])

消除那些难题,Insus.NET写了三个函数,能够方便以后的扩展,即便数值现身TB或是或更加高时,能够只改那几个函数就可以。

实例

–剖断最终两位数是还是不是为上边那么些单位
IF (RIGHT(@Ov,2) NOT IN (‘TB’,’GB’,’MB’,’KB’))
    RETURN NULL

上边选拔sql函数存款和储蓄进程来落实的一种大小排序的主意

图片 1

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

 

相关文章

No Comments, Be The First!
近期评论
    功能
    网站地图xml地图