I have a table like this
CREATE TABLE [dbo].[TEST_FIND]
(
[UNIT1] [nvarchar](50) NULL,
[UNIT2] [nvarchar](50) NULL,
[UNIT3] [nvarchar](50) NULL,
[UNIT4] [nvarchar](50) NULL
) ON [PRIMARY]
and data in that table looks like this
UNIT1 | UNIT2 | UNIT3 | UNIT4
a | b | c | d
null | b | null | null
null | null | c | null
null | null | null | d
a | null | null | null
and my stored procedure is:
CREATE PROCEDURE [dbo].[A_TEST]
@UNIT1 nvarchar(50) = NULL,
@UNIT2 nvarchar(50) = NULL,
@UNIT3 nvarchar(50) = NULL,
@UNIT4 nvarchar(50) = NULL
AS
BEGIN
SELECT
UNIT1, UNIT2, UNIT3, UNIT4
FROM
TEST_FIND
WHERE
@UNIT1 is null or UNIT1 like '%'+@UNIT1+ '%' AND
@UNIT2 is null or UNIT2 like '%'+@UNIT2+ '%' AND
@UNIT3 is null or UNIT3 like '%'+@UNIT3+ '%' AND
@UNIT4 is null or UNIT4 like '%'+@UNIT4+ '%'
END
The problem is, when I call my procedure like this:
exec A_TEST 'a', null, null, null
the result is ok (just show from table TEST_FIND where UNIT 1 is 'a')
but when use
exec A_TEST null, 'b', null, null
the result is
select * from TEST_FIND
I don't know why, and what's the problem
Need fix this soon, help me
Thanks