Ich habe MyTable mit einer Spaltenmeldung NVARCHAR (MAX).
Datensatz mit ID 1 enthält die Nachricht '0123456789333444 Test'
Wenn ich die folgende Abfrage ausfühle
%Vor%Datensatz-ID 1 wird in den Ergebnissen angezeigt und meiner Meinung nach sollte es nicht, weil 0123456789333444 0123456789000001 nicht enthält.
Kann jemand erklären, warum die Aufzeichnungen trotzdem angezeigt werden?
BEARBEITEN
%Vor%gibt Folgendes zurück:
%Vor%Dies liegt daran, dass das @Keyword nicht in Anführungszeichen eingeschlossen ist. Was zu null, eins oder mehr passt.
Gibt eine Übereinstimmung der Wörter oder Sätze an, die mit beginnen der angegebene Text Schließen Sie einen Präfixbegriff in doppelte Anführungszeichen ein ("") und fügen Sie ein Sternchen () vor dem abschließenden Anführungszeichen hinzu, so dass Der gesamte Text beginnt mit dem einfachen Begriff, der vor dem Stern angegeben ist Ist abgestimmt. Die Klausel sollte folgendermaßen angegeben werden: CONTAINS (Spalte, '"Text "'). Der Stern entspricht null, einem oder mehreren Zeichen (der Wort oder Wörter im Wort oder Satz). Wenn der Text und das Sternchen werden nicht durch doppelte Anführungszeichen begrenzt, also liest das Prädikat CONTAINS (Spalte, 'text *'), Volltextsuche betrachtet das Sternchen als ein Zeichen und sucht nach genauen Übereinstimmungen mit Text *. Der Volltext Engine findet keine Wörter mit dem Sternchen (*), weil Wörtertrenner ignorieren solche Zeichen normalerweise.
Wann ist eine Phrase, jedes Wort in der Phrase ist als separates Präfix betrachtet. Daher eine Abfrage, die a angibt Präfixbegriff von "local wine *" stimmt mit Zeilen mit dem Text "local" überein Weingut "," lokal gewürzt und gegessen ", und so weiter.
Sehen Sie sich die MSDN zum Thema an. MSDN
Tags und Links sql sql-server full-text-search tsql contains