July 26, 2008 at 8:30 am
I need to create a true WHOLE NUMBER function that does not contains -+?/ and all operators or funny characters.After I created the function below it seems like it will still accept '+' or anything returns 0 or >. Please advise. Thanks.
select dbo.fn_ISTRUEWholeNumber(+6)
and the result returns 1
Below is my function
-------------------------------------------
-- =============================================
-- Drop Function
-- =============================================
IF EXISTS ( select * from information_schema.routines
where SPECIFIC_SCHEMA = 'dbo' and SPECIFIC_NAME = N'fn_ISINTEGER' and ROUTINE_TYPE = 'FUNCTION ' )
DROP FUNCTION dbo.fn_ISTRUEWholeNumber
go
-- =============================================
-- Create Function
-- =============================================
CREATE FUNCTION dbo.fn_ISTRUEWholeNumber
(
@strToBeEval varchar(1000) -- enlarge this if needed
)
RETURNS bit
AS
BEGIN
DECLARE @bitReturn bit
IF @strToBeEval LIKE '%[^0-9]%'
SET @bitReturn = 0
ELSE
SET @bitReturn = 1
RETURN @bitReturn
END
GO
July 26, 2008 at 8:52 am
You already have a true whole number function and it works well. The only problem is with how you tested it... you've passed a numeric value to the function and +6 is not a naturally occuring numeric. The "+" is nothing more than a formatting symbol in this case.
Any conversion from +6 without single quotes to a varchar whether in your function or not, will result in just a '6'. Further, no natural numeric datatype will actually store the "+" sign so, if it's a number, you don't have to worry about testing for a plus sign.
--Jeff Moden
Change is inevitable... Change for the better is not.
July 26, 2008 at 9:59 am
THanks.
Viewing 3 posts - 1 through 2 (of 2 total)
You must be logged in to reply to this topic. Login to reply