你好,我有一个函数,并且引入了一个带字母或数字的变量,如果变量是一个字母,它需要引起错误并返回0,或者如果是数字则返回1. / p>
在T-SQL中我有一个程序,最终将调用此函数来检查是一个数字:
IF dbo.VALIDNUMBER(@sTxpX) != 0 AND @sTxpX IS NOT NULL
变量@sTxpX保持一个值为' T'所以我知道它需要从函数返回0因为无效是一个数字,但我没有得到正确的函数来构建它,我将在这里感谢一些帮助。
CREATE FUNCTION DBO.VALIDNUMBER (@sTextStr VARCHAR(4000)) RETURNS BIT AS
BEGIN
DECLARE @bValidNumberStr BIT = 1; DECLARE @nTest BIGINT;
SET @nTest = CAST(@sTextStr AS numeric(38, 10)) + 1;
RETURN @bValidNumberStr;
EXCEPTION
WHEN OTHERS THEN
SET @bValidNumberStr = 0;
RETURN @bValidNumberStr;
END;
答案 0 :(得分:3)
为什么不能使用内置的SQL函数?它更快,你不需要疯狂地提出解决方案。
在您的程序中执行以下操作:
DECLARE @isNumber bit;
IF (ISNUMERIC(@sTextStr) = 1)
BEGIN
SET @isNumber = 1
END
ELSE
BEGIN
SET @isNumber = 0
RAISERROR(15600, 16, 20, 'That was not a number')
END
您可以稍后将@isNumber变量传回给用户。
答案 1 :(得分:2)
尝试此功能:
CREATE function [dbo].[VALIDNUMBER]
(@strText VARCHAR(4000))
RETURNS BIT
AS
BEGIN
DECLARE @Return as bit
IF TRY_CAST(@strText AS NUMERIC(38,10)) IS NOT NULL BEGIN
SET @Return = 1
END ELSE BEGIN
SET @Return = 0
END
RETURN @Return
END