|
|
|
SSC-Enthusiastic
      
Group: General Forum Members
Last Login: Yesterday @ 1:37 PM
Points: 100,
Visits: 284
|
|
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
|
|
|
|
|
SSC-Dedicated
           
Group: General Forum Members
Last Login: Today @ 7:36 PM
Points: 32,931,
Visits: 26,820
|
|
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 "RBAR is pronounced "ree-bar" and is a "Modenism" for "Row-By-Agonizing-Row".
First step towards the paradigm shift of writing Set Based code: Stop thinking about what you want to do to a row... think, instead, of what you want to do to a column."
For better, quicker answers on T-SQL questions, click on the following... http://www.sqlservercentral.com/articles/Best+Practices/61537/
For better answers on performance questions, click on the following... http://www.sqlservercentral.com/articles/SQLServerCentral/66909/
|
|
|
|
|
SSC-Enthusiastic
      
Group: General Forum Members
Last Login: Yesterday @ 1:37 PM
Points: 100,
Visits: 284
|
|
|
|
|