SqlServer數字型別校驗

2022-02-05 00:35:34 字數 1691 閱讀 9576

sqlserver 

isnumeric 校驗時

認為科學

計數法、

貨幣符號均為

合法,如果

此類資料

不加轉換

直接插入資料庫

的float、

decimal等

欄位中是

會出異常。以下函式可用於校驗字串是否為數

字型別,

僅允許輸入+、-、0-9、.字元,

包含最大值校驗

--引數1:型別varchar 被校驗字串

--引數2:型別int 整數字數長度

--引數3:型別int 小數字數長度,若為負數既不校驗小數字數長度

--返回值:型別int  返回"1"既檢驗正確,"0"既檢驗不通過(不是有效的數字型別或不符合規定的長度規範 

)if object_id('is_number_new') is not null 

drop 

function

[dbo

].[is_number_new

]alter

function

[dbo

].[is_number_new

](@strvar

varchar(100),

@iint,

@jint)

returns

intas

begin

if (isnumeric(@strvar) =

0)--

系統函式過濾絕大部分異常資料,但對於科學計數法等無法過濾

return

0else

begin

if (@j=0)

begin

if (patindex('

%[^0-9|+|-]%

',@strvar) >

0) --

整數校驗,只允許+、-、數字字元

return

0end

else

begin

if (patindex('

%[^0-9|.|+|-]%

',@strvar) >

0) --

帶小數校驗

return

0end

set@strvar

=replace(replace(@strvar,'

-',''),'

+','')

--最大值校驗

if (charindex('

.',@strvar) =

0)begin

if (len(@strvar) >

@i)return

0end

else

begin

if ((charindex('

.',@strvar) -

1) >

@i)return

0else

if (@j

>=

0)begin

if (@j

-datalength(substring(@strvar,charindex('

.',@strvar) +

1,99)) <

0)return

0end

endend

return

1end

sql server 中語法校驗

在今天的培訓考試過程中,我提出乙個擴充套件題,要求對提交的sql進行語法校驗.其實這個題很簡單,根本不需要用正規表示式去做語法分析,可以直接使用sql server自帶的功能.不多說,上 alter proc sp checksql sql varchar 8000 error varchar ma...

IFS日期校驗與數字校驗

在ifs 後台有時從外部匯入資料,直接資料oracle報錯資訊可讀性較差,現改進校驗過程,如下 procedure validate date value in varchar2,format in varchar2 is tmp date date begin tmp date to date v...

js 校驗數字例子

校驗數字例子 function isnumberic param if d d test param isnumberic 0.1q 另附 驗證數字的正規表示式集 驗證數字 0 9 驗證n位的數字 d 驗證至少n位數字 d 驗證m n位的數字 d 驗證零和非零開頭的數字 0 1 9 0 9 驗證有兩...