Я пишу хранимую процедуру поиска клиента, которая имеет три параметра firstname, lastname, fathers name
, все они varchar
Я написал, как показано ниже:
CREATE PROCEDURE [dbo].[SearchCustomer]
(
@p_FirstName varchar = NULL
,@p_LastName varchar = NULL
,@p_FatherFirstName varchar = NULL
)
AS
BEGIN
SET NOCOUNT ON
SELECT [CustomerID]
,[CustomerTitle]
,[FirstName]
,[MiddleName]
,[LastName]
,[FatherFirstName]
,[EmailId]
FROM [Customer]
WHERE [FirstName] LIKE COALESCE(@p_FirstName,'%')
OR [LastName] LIKE COALESCE @p_LastName,'%')
OR [FatherFirstName] LIKE COALESCE(@p_FatherFirstName,'%')
END
Я использую необязательные параметры, потому что если нет значения параметра, мне нужно получить полный список без каких-либо критериев, но когда я даю только имя, мне нужны только те строки, которые соответствуют этим критериям, а не остальные, но теперь в нем перечислены все
Я думаю, проблема где-то рядом ИЛИ
Не могли бы вы помочь?
Если я изменил ИЛИ на И
Теперь, если я поставлю имя как 'abc', а фамилия и имя отца будут черными ...
Я получаю все записи, включая 'abc' в качестве имени ..
мне нужна только строка, имя которой 'abc', а не остальные