今天在論壇上看到乙個問題,如下:
解決這個問題,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...