Say I\'ve got a function or stored procedure that takes in several VARCHAR parameters. I\'ve gotten tired of writing SQL like this to test if these parameters have a value:
You can do ISNULL(@SomeVarcharParam, '') <> ''
or you can create a UDF that returns a bit:
create function dbo.IsNullOrEmpty(@x varchar(max)) returns bit as
BEGIN
IF @SomeVarcharParm IS NOT NULL AND LEN(@SomeVarcharParm) > 0
RETURN 0
ELSE
RETURN 1
END
And call that using IF NOT dbo.IsNullOrEmpty(@SomeVarcharParam) BEGIN ...
Keep in mind that when calling a UDF, you MUST prefix the owner of it (here, dbo.)
Use this function (based on Derek's):
CREATE FUNCTION dbo.isNullOrEmpty(@x varchar(max)) RETURNS BIT AS
BEGIN
IF @x IS NOT NULL AND LEN(@x) > 0
RETURN 0
RETURN 1
END
as
dbo.isNullOrEmpty(@someVar)
or
WHERE dbo.isNullOrEmpty(@someVar) = 1
in a stored procedure or query.
You can just do IF @SomeVarcharParam <> ''
since the condition will evaluate to NULL
and the branch won't be taken if the parameter is null
IF COALESCE(@SomeVarcharParm, '') <> ''
BEGIN
-- do stuff
END