isnumeric()函数的一个问题是,如果数字有小数点分隔符,那么您将得到true,
什么是完全正确的,但是如果像我这样的人需要直接检查varchar中的数字,而没有十进制符号,(当我需要计算条形码上的校验位时,我得到了这个结果),你可以使用castom
使功能类似
create FUNCTION [dbo].[checkbarkod]
(
@ean_kod varchar(13)
)
RETURNS bit
AS
begin
declare @duzina int
declare @slovo char(1)
declare @pozicija int
declare @uredu bit
set @duzina=len(@ean_kod)
while @duzina>0
begin
set @slovo=(substring(@ean_kod,@duzina,1))
if (@slovo not in('1','2','3','4','5','6','7','8','9','0'))
begin
set @uredu=convert(bit,0)
break
end
else
begin
set @uredu=convert(bit,1)
set @duzina=@duzina-1
end
end
RETURN @uredu
end