Я довольно долго пытался запустить этот запрос.
Короче, мой запрос выполняет поиск по fileno и / или полю поиска
DECLARE @pSearchFor AS NVARCHAR(100);
- я здесь тестирую с нулевым значением, '' или отдельными словами
SET @pSearchFor = null - '"marsa" и "mosta"';
IF ISNULL(@pSearchFor,'') = '' SET @pSearchFor = '""' ;
declare @fileNo nvarchar(50) = 'e/e'
select top 1000 r.FileId, r.FileNo, fs.SearchField, @pSearchFor
from regfile as r
left outer join FileSearchFields as fs on r.FileId = fs.FileID
where r.FileNo like
CASE
WHEN Len(@fileno) > 1 THEN '%'+@fileNo+'%'
ELSE r.FileNo
END
AND
1 =
CASE WHEN ISNULL(@pSearchFor, '') = '' THEN 1 ELSE 0 END
or CONTAINS(fs.SearchField, @pSearchFor)
Я ничего не получаю, если @pSearchFor
равно нулю, иначе отлично работает.
Мне нужно вернуть все экземпляры, если ноль
Одним из возможных решений может быть вызов 2 отдельных sps или использование if / else, но, возможно, существует лучший метод.
Я действительно ценю вашу помощь!