正解SQLSEVER 2005 sql排序

2021-09-09 03:57:32 字數 1855 閱讀 8981

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

解決這個問題,insus.net寫了乙個函式,可以方便以後的擴充套件,如果數值出現tb或是或更高時,可以只改這個函式即可。

setansi_nulls 

ongo

setquoted_identifier 

ongo

alter

function

[dbo].

[udf_orderlimitsize](

@ovnvarchar(30

))returns

decimal(18

,6)as

begin

--如果長度少於等於2的數值為返回nullif(

len(

@ov) 

<=2)

return

null

--宣告兩個變數

declare

@vdecimal(18

,6),@n

decimal(18

,6)--

判斷最後兩位數是否為下面這些單位if(

right

(@ov,2

) notin(

'tb',

'gb',

'mb',

'kb'))

return

null

--去掉最後兩位數之後,把值轉為decimal資料型別    

set@n

=convert

(decimal(18

,6),left

(@ov

, len

(@ov) -

2))--判斷截除最後兩位數之後,使用isnumeric判斷是否為有效的數值,如果不是返回nullif(

isnumeric(@n

) =0)

return

null

--下面做單位轉算,如果遇上有新單位時,可以作相應新增if(

@ovlike

'%tb')

set@v=@n

*1024

*1024

*1024if(

@ovlike

'%gb')

set@v=@n

*1024

*1024if(

@ovlike

'%mb

')    

set@v=@n

*1024if(

@ovlike

'%kb

')    

set@v=@n

return

@vend

下面為了應用這個函式,例舉例子:

create

table

test(id 

intidentity(1

,1),size 

nvarchar(50

))go

insert

into

[test

]values('

23.5mb

'),(

'10gb

'),(

'12.7mb

'),(

'8gb')

goselect[id

],[size

]from

test 

orderby[

dbo].[

udf_orderlimitsize](

[size])

執行結果:

parseInt 函式正解

阿里巴巴的前端面試題目中有一道題是這樣的,是關於parseint 的用法的,題目如下 var b parseint 01 alert b b var c parseint 09 08 2009 alert c c 解答這道題目,我們必須要知道parseint 是怎麼工作的?正確的答案應該是 b 1 ...

正解質因數

今天學習了python100例中的正解質因數 所以自己優化了一下,並且加入了對負數和小數的判斷 能跑起來,就是不知道邏輯對不對。請各位點評。usr bin env python coding utf 8 time 2020 8 10 22 38 author bt烤翅 題目 將乙個正整數分解質因數。...

暗黑遊戲(正解)

這是一道使用多重揹包的題 其實還是挺簡單的 哈哈哈哈哈哈哈 描述暗黑遊戲中,裝備直接決定玩家人物的能力。可以使用 pg 和 rune 購買需要的物品。暗黑市場中的裝備,每件有不同的 pg 和 rune 能力值 最大可購買件數。kid 作為暗黑戰網的乙個玩家,當然希望使用盡可能少的 pg 和 rune...