我有以下功能,应该检查数字是4位数。
function f_checkNum(
@pnum integer
) returns integer
begin
return case
when @pnum like '[0-9][0-9][0-9][0-9]' then 1
else 0
end;
end
如果输入的数字低于4位数,但如果它们超过4则会产生错误
,这样可以正常工作Msg 8115, Level 16, State 2, Line 1
Arithmetic overflow error converting expression to data type int.
请告诉我如何修复它。谢谢
答案 0 :(得分:2)
Return CASE WHEN @pnum between 1000 and 9999 Then 1 Else 0 End
如果您需要包含负数,那么
Return CASE WHEN ABS(@pnum) between 1000 and 9999 Then 1 Else 0 End
答案 1 :(得分:0)
尝试这样的事情:
return case
when LEN(cast(@pnum as varchar)) = 4 then 1
else 0
end;
答案 2 :(得分:0)
您可以改用该功能。这将检查您的号码长度,并同时满足负数。
create function f_checkNum(
@pnum integer
) returns integer
begin
return case when len(cast(@pnum as varchar(max))) = 4 and @pnum > 0
then 1
else 0
end
end