:
EXISTS :
Select ..
From ..
Where ( @Status_Id Is Null Or Status_Id = @Status_Id )
And (@Date Is Null Or [Date] = @Date )
And (@Criteria Is Null Or Exists(
Select 1
From ContainsTable(TableName, Column1,...,ColumnN, @Criteria..) As SearchTable1
Where SearchTable1.PK = OuterTable.PK
) )
:
, . 1 , @Keywords . SELECT freetext. , @Keywords null?
freetext , , @Keywords - , - :
Select ...
From Table1
Where ( @Status_Id Is Null Or Status_Id = @Status_Id )
And ...
And (
@Keywords Is Null
Or Exists (
Select 1
From Table1ShortSearch(@Keywords) As T1
Where T1.Key = Table1.Key
)
Or Exists (
Select 1
From Table1LongSearch(@Keywords) As T2
Where T2.Key = Table1.Key
)
)
freetext, , , CTE , Left Join , , @Keywords . :
Select ...
From Table1
Left Join (
Select [Key], Sum(Rank) as Rank
From (
Select [Key], Rank*3 As Rank
From Table1ShortSearch(@Keywords)
Union All
Select [Key], Rank*2 As Rank
From Table1LongSearch(@Keywords)
) As RankingTbl
Group By [Key]
) as R
On R.[Key] = Table1.Id
Where ( @Status_Id Is Null Or Status_Id = @Status_Id )
And ...
And ( @Keywords Is Null Or R.Key Is Not Null )
Order By R.Rank Desc