Click here to monitor SSC
SQLServerCentral is supported by Red Gate Software Ltd.
 
Log in  ::  Register  ::  Not logged in
 
 
 
        
Home       Members    Calendar    Who's On


Add to briefcase

True WHOLE NUMBER function. Expand / Collapse
Author
Message
Posted Saturday, July 26, 2008 8:30 AM
SSC-Enthusiastic

SSC-EnthusiasticSSC-EnthusiasticSSC-EnthusiasticSSC-EnthusiasticSSC-EnthusiasticSSC-EnthusiasticSSC-EnthusiasticSSC-Enthusiastic

Group: General Forum Members
Last Login: Wednesday, February 12, 2014 7:34 AM
Points: 100, Visits: 317
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
Post #541385
Posted Saturday, July 26, 2008 8:52 AM


SSC-Dedicated

SSC-DedicatedSSC-DedicatedSSC-DedicatedSSC-DedicatedSSC-DedicatedSSC-DedicatedSSC-DedicatedSSC-DedicatedSSC-DedicatedSSC-DedicatedSSC-DedicatedSSC-DedicatedSSC-Dedicated

Group: General Forum Members
Last Login: Today @ 5:22 PM
Points: 36,016, Visits: 30,308
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."

"Change is inevitable. Change for the better is not." -- 04 August 2013
(play on words) "Just because you CAN do something in T-SQL, doesn't mean you SHOULDN'T." --22 Aug 2013

Helpful Links:
How to post code problems
How to post performance problems
Post #541387
Posted Saturday, July 26, 2008 9:59 AM
SSC-Enthusiastic

SSC-EnthusiasticSSC-EnthusiasticSSC-EnthusiasticSSC-EnthusiasticSSC-EnthusiasticSSC-EnthusiasticSSC-EnthusiasticSSC-Enthusiastic

Group: General Forum Members
Last Login: Wednesday, February 12, 2014 7:34 AM
Points: 100, Visits: 317
THanks.
Post #541396
« Prev Topic | Next Topic »

Add to briefcase

Permissions Expand / Collapse