Suchabfrage, Priorität "Sortieren nach"
Ich muss eine einfache Suche in einer kleinen Inhaltstabelle implementieren: ID, Name, Beschreibung, Inhalt. Die Ergebnisse müssen nach Prioritäten geordnet sein
NameBeschreibungInhaltWenn das gesuchte Wort im Beschreibungsfeld gefunden wurde, wird es nur nach allen Zeilen mit Hund im Namensfeld angezeigt
Was ich getan habe:
Ich habe versucht, eine temporäre Tabelle mit der Struktur einer Tabelle zu erstellen, die ich verwende, aber mit einer anderen Feldpriorität. Für jedes Feld verwende ich diese für die SucheEinfügen auswählen Tabelle zu temp
Beispiel:
DECLARE @query NVARCHAR(255)
CREATE TABLE #tbl_search
(
[id] INT NOT NULL ,
[name] NVARCHAR(255) ,
[description] NVARCHAR(MAX) ,
[content] NVARCHAR(MAX) ,
[priority] INT
)
--searching in name field
INSERT INTO #tbl_search
( [ID] ,
[name] ,
[description] ,
[content] ,
[priority]
)
SELECT [ID] ,
[name] ,
[description] ,
[content] ,
1
FROM [tbl_content]
WHERE name LIKE '%' + @query + '%'
--searching in description field
INSERT INTO #tbl_search
( [ID] ,
[name] ,
[description] ,
[content] ,
[priority]
)
SELECT [ID] ,
[name] ,
[description] ,
[content] ,
2
FROM [tbl_content]
WHERE description LIKE '%' + @query + '%'
AND id NOT IN ( SELECT id
FROM #tbl_search )
--.....
SELECT *
FROM #tbl_search
ORDER BY [priority]
DROP TABLE #tbl_search