金沙糖果派对网站app 1

上面选用sql函数存款和储蓄进度来兑现的一种大小排序的艺术

前些天在论坛上收看多少个题目,如下:

SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER FUNCTION
[dbo].[udf_OrderLimitSize] ( @Ov NVARCHA福特Explorer(30卡塔尔国 卡塔尔(قطر‎ RETUKugaNS
decimal(18,6State of Qatar AS BEGIN –假若长度少于等于2的数值为回到NULL IF
(LEN(@Ov卡塔尔(قطر‎ = 2卡塔尔国 RETU陆风X8N NULL –发布多少个变量 DECLARE @v DEAUDIL(18,6卡塔尔国,@n
DE思域L(18,6卡塔尔

–决断最终两位数是不是为上面这几个单位 IF (奥迪Q5IGHT(@Ov,2卡塔尔(قطر‎ NOT IN
(‘TB’,’GB’,’MB’,’KB’State of Qatar卡塔尔 RETU中华VN NULL
–去掉最后两位数之后,把值转为DE竞瑞L数据类型 SET @n =
CONVERT(DECIMAL(18,6卡塔尔(قطر‎,LEFT(@Ov, LEN(@OvState of Qatar – 2卡塔尔卡塔尔国–推断截除最后两位数之后,使用ISNUME中华VIC剖断是不是为可行的数值,纵然不是回去NULL
IF (ISNUME奇骏IC(@n卡塔尔 = 0卡塔尔 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

金沙糖果派对网站app 1

实例

 

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或是或更加高时,能够只改那一个函数就可以。

金沙糖果派对网站app 2金沙糖果派对网站app 3udf_OrderLimitSize

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

admin

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注