Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Referenzhandbuch » Verwendung von SQL » SQL-Sprachelemente » Suchbedingungen

 

CONTAINS-Suchbedingung

Syntax
CONTAINS ( Spaltenname [,...], CONTAINS-Abfragezeichenfolge )
CONTAINS-Abfragezeichenfolge :
Einfacher_Ausdruck
| Oder-Ausdruck
Einfacher_Ausdruck :
Primärausdruck
| UND-Ausdruck
ODER-Ausdruck :
Einfacher_Ausdruck { OR | | } CONTAINS-Abfragezeichenfolge
Primärausdruck :
Grundausdruck
| FUZZY " Annähernder_Ausdruck "
| UND-NICHT-Ausdruck
UND-Ausdruck :
Primärausdruck [ AND | & ] Einfacher_Ausdruck
UND-NICHT-Ausdruck :
Primärausdruck [ AND | & ] { NOT | - } Grundausdruck
Grundausdruck :
Begriff
| Phrase
| ( CONTAINS-Abfragezeichenfolge )
| NAHE-BEI-Ausdruck
Annähernder_Ausdruck :
Begriff
| Annähernder_Ausdruck Begriff
Begriff :
Einfacher_Begriff
| Präfixbegriff
Präfixbegriff : 
Einfacher_Begriff*
Phrase :
" Phrasenzeichenfolge "
NAHE-BEI-Ausdruck :
Begriff NEAR [Abstand] Begriff
| Begriff { NEAR | ~ } Begriff
Phrasenzeichenfolge :
Begriff
| Phrasenzeichenfolge Begriff
Einfacher_Begriff: Eine Zeichenfolge, die durch Leerzeichen und Sonderzeichen unterbrochen wird und einen einzelnen, indizierten Begriff (Wort) darstellt, nach dem gesucht werden soll.
Abstand: Eine positive Ganzzahl
Parameter
  • UND-Ausdruck   Verwenden Sie einen UND-Ausdruck, um anzugeben, dass sowohl der Primärausdruck als auch der Einfache_Ausdruck im Textindex gefunden werden müssen.

    Standardmäßig gilt: Wenn zwischen Begriffe oder Ausdrücke kein Operator gesetzt ist, wird ein UND-Ausdruck angenommen. 'a b' wird beispielsweise als 'a AND b' interpretiert.

    Ein kaufmännisches Und (&) kann anstelle von AND verwendet werden und ohne Zwischenraum an beiden Seiten an die Ausdrücke oder Begriffe gesetzt werden (Beispiel: 'a &b').

    Weitere Hinweise finden Sie unter Zulässige Syntax für Sonderzeichen.

  • UND-NICHT-Ausdruck   Verwenden Sie den UND-NICHT-Ausdruck, um anzugeben, dass der Primärausdruck im Textindex vorhanden sein muss, der Grundausdruck hingegen im Textindex nicht enthalten sein darf. Dies wird auch als Negation bezeichnet.

    Wenn Sie einen Bindestrich für die Negation verwenden, muss links vor dem Bindestrich ein Leerzeichen gesetzt werden, rechts nach dem Bindestrich hingegen muss der Begriff ohne Leerzeichen unmittelbar folgen, da sonst der Bindestrich nicht als Negationszeichen angesehen wird. Beispiel: 'a -b' ist gleich 'a AND NOT b', während bei 'a - b' der Bindestrich ignoriert wird und die Zeichenfolge 'a AND b' entspricht. 'a-b' entspricht der Phrase '"a b"'. Weitere Hinweise finden Sie unter Zulässige Syntax für den Bindestrich (-).

  • ODER-Ausdruck   Verwenden Sie den ODER-Ausdruck um anzugeben, dass entweder der Einfache_Ausdruck oder die CONTAINS-Abfragezeichenfolge im Textindex vorhanden sein muss. 'a|b' wird beispielsweise als 'a OR b' interpretiert. Weitere Hinweise finden Sie unter Zulässige Syntax für Sonderzeichen.

  • FUZZY-Ausdruck   Verwenden Sie den FUZZY-Ausdruck um Begriffe zu finden, die dem angegebenen Begriff ähnlich sind. Fuzzy-Suchen werden nur in NGRAM-Textindizes unterstützt. Weitere Hinweise finden Sie unter Fuzzy-Suchen.

  • NAHE-BEI-Ausdruck   Verwenden Sie den NAHE-BEI-Ausdruck, um nach Begriffen zu suchen, die nahe beieinander liegen. Dies wird auch als Nachbarschaftssuche bezeichnet. Beispiel: 'b NEAR[5] c' sucht nach Vorkommen von b und c, die maximal fünf Begriffe voneinander entfernt sind. Die Reihenfolge der Begriffe ist nicht wichtig. 'b NEAR c' entspricht 'c NEAR b'.

    Wenn NEAR ohne Abstand angegeben wird, gilt ein Standardabstand von 10 Begriffen.

    Sie können anstelle von NEAR auch eine Tilde (~) eingeben. Dies entspricht der Angabe von NEAR ohne Abstand, sodass ein Standard von 10 Begriffen angewendet wird.

    NEAR-Ausdrücke können nicht verkettet werden (Beispiel: 'a NEAR[1] b NEAR[1] c').

    Weitere Hinweise finden Sie unter Zulässige Syntax für Sonderzeichen und Nachbarschaftssuche.

  • Präfixbegriff   Verwenden Sie den Präfixbegriff, um nach Begriffen zu suchen, die mit dem angegebenen Präfix beginnen. Beispiel: 'datab*' sucht nach einem Begriff, der mit datab beginnt. Dies wird auch als Präfixsuche bezeichnet. In einer Präfixsuche werden Übereinstimmungen in dem Abschnitt des Begriffs gesucht, der sich links vom Sternchen befindet. Weitere Hinweise finden Sie unter Zulässige Syntax für den Sternchen-Platzhalter (*) und Präfixsuche.

Bemerkungen

Die Suchbedingung CONTAINS übernimmt eine Spaltenliste und eine CONTAINS-Abfragezeichenfolge als Argumente. Sie kann überall dort verwendet werden, wo eine Suchbedingung (auch als "Prädikat" bezeichnet) angegeben werden kann, und gibt TRUE oder FALSE zurück. CONTAINS-Abfragezeichenfolge muss eine Konstantenzeichenfolge oder eine Variable sein, mit einem Wert, der zum Abfragezeitpunkt bekannt ist.

Wenn mehrere Spalten angegeben werden, müssen sie sich alle auf eine einzige Basistabelle beziehen. Ein Textindex kann sich nicht über mehrere Basistabellen erstrecken. Die Basistabelle kann direkt in der FROM-Klausel referenziert werden, sie kann aber auch in einer Ansicht oder einer abgeleiteten Tabelle benutzt werden, vorausgesetzt dass die Ansicht oder abgeleitete Tabelle nicht DISTINCT, GROUP BY, ORDER BY, UNION, INTERSECT, EXCEPT oder eine Zeilenbegrenzung benutzt.

Die folgenden Warnungen gelten für die Verwendung von nicht-alphanumerischen Zeichen in Abfragezeichenfolgen:

  • Ein Stern in der Mitte eines Begriffs bewirkt die Rückgabe eines Fehlers.

  • Nicht-alphanumerische Zeichen (und Sonderzeichen) sollten als Annähernder_Ausdruck nicht verwendet werden, weil sie als Leerzeichen angesehen und als Begriffssegmentierer verwendet werden.

  • Wenn möglich, sollten nicht-alphanumerische Zeichen, die keine Sonderzeichen sind, in einer Abfragezeichenfolge nicht verwendet werden. Jedes nicht-alphanumerische Zeichen, das kein Sonderzeichen ist, bewirkt, dass der Begriff, in dem es vorkommt, als Phrase behandelt wird, wobei der Begriff an der Stelle des Zeichens segmentiert wird. 'things we've done' wird beispielsweise als 'things "we ve" done' interpretiert.

Innerhalb von Phrasen ist der Stern das einzige Sonderzeichen, das weiterhin als Sonderzeichen interpretiert wird. Alle anderen Sonderzeichen in Phrasen werden als Leerzeichen interpretiert und als Begriffssegmentierer verwendet.

Die Interpretation der CONTAINS-Abfragezeichenfolge wird in zwei Hauptschritten durchgeführt:

  • Schritt 1: Interpretation von Operatoren und Vorrang   Während dieses Schrittes werden Schlüsselwörter als Operatoren interpretiert und Vorrangregeln angewendet. Weitere Hinweise finden Sie unter Operatorvorrang in einer CONTAINS-Suchbedingung.

  • Schritt 2: Anwendung von Einstellungen für das Textkonfigurationsobjekt   Während dieses Schrittes werden die Einstellungen für Textkonfigurationsobjekte auf die Begriffe angewendet. Beispiel: Bei einem NGRAM-Textindex werden Begriffe in ihre n-gram-Darstellung segmentiert. Während dieses Schrittes werden die Abfragebegriffe, die die Einstellungen für die Begriffslänge überschreiten oder in der Stoppliste enthalten sind, entfernt. Weitere Hinweise zur Interpretation einer Abfragezeichenfolge bei der Entfernung von Begriffen finden Sie unter Beispiel-Textkonfigurationsobjekte.

Operatorvorrang in einer CONTAINS-Suchbedingung

Während der Auswertung der Abfrage werden die Ausdrücke gemäß der nachstehenden Vorrangfolge ausgewertet:

  1. FUZZY, NEAR

  2. AND NOT

  3. AND

  4. OR

Zulässige Syntax für den Sternchen-Platzhalter (*)

Das Sternchen wird für die Präfixsuche verwendet. Ein Sternchen muss entweder am Ende der Abfragezeichenfolge stehen oder es muss ein Leerzeichen, ein kaufmännisches Und, ein Senkrechtstrich, eine geschlossene eckige Klammer oder ein schließendes Anführungszeichen darauf folgen. In allen anderen Fällen wird ein Fehler gemeldet.

In der folgenden Tabelle werden die zulässigen Verwendungsmöglichkeiten für einen Sternchen-Platzhalter angegeben:

Abfragezeichenfolge Entspricht: Interpretiert als:

'th*'

Suche nach allen Begriffen, die mit th beginnen.

'th*&best'

'th* AND best' und 'th* best'

Suche nach einem Begriff, der mit th beginnt, und nach dem Begriff best.

'th*|best'

'th* OR best'

Suche entweder nach einem Begriff, der mit th beginnt, oder nach dem Begriff "best".

'very&(best|th*)'

'very AND (best OR th*)'

Suche nach dem Begriff "very" und dem Begriff "best" oder einem beliebigen Begriff, der mit th beginnt.

'"fast auto*"'

Suche nach dem Begriff "fast", auf den unmittelbar ein Begriff folgt, der mit auto beginnt.

'"auto* price"'

Suche nach einem Begriff, der mit auto beginnt und auf den unmittelbar der Begriff "price" folgt.

Hinweis

Die Interpretation der Abfragezeichenfolgen mit Sternchen kann je nach den Einstellungen für das Textkonfigurationsobjekt unterschiedlich ausfallen. Weitere Hinweise finden Sie unter Präfixsuche.

Zulässige Syntax für den Bindestrich (-)

Der Bindestrich kann für die Negation eines Begriffs oder eines Ausdrucks verwendet werden und entspricht dem Operator NOT. Ob ein Bindestrich als Negation interpretiert wird, hängt von seiner Stellung in der Abfragezeichenfolge ab. Beispiel: Wenn ein Bindestrich direkt vor einem Begriff oder einem Ausdruck steht, wird er als Negation interpretiert. Wenn ein Bindestrich in einen Begriff eingebettet ist, wird er als Bindestrich interpretiert.

Vor einem als Negation verwendeten Bindestrich muss ein Leerzeichen stehen, danach muss unmittelbar ein Ausdruck folgen.

Ein Bindestrich in einer Phrase oder einem Annähernden_Ausdruck wird als Leerzeichen interpretiert und als Begriffssegmentierer verwendet.

Die nachstehende Tabelle zeigt die zulässige Syntax für einen Bindestrich:

Abfragezeichenfolge Entspricht: Interpretiert als:

'the -best'

'the AND NOT best', 'the AND -best', 'the & -best', 'the NOT best'

Suche nach dem Begriff "the", aber nicht nach dem Begriff "best".

'the -(very best)'

'the AND NOT (very AND best)'

Suche nach dem Begriff "the", aber nicht nach den Begriffen "very" und "best".

'the -"very best"'

'the AND NOT "very best"'

Suche nach dem Begriff "the", aber nicht nach der Phrase "very best".

'alpha-numerics'

'"alpha numerics"'

Suche nach dem Begriff "alpha", auf den unmittelbar der Begriff "numerics" folgt.

'wild - west'

'wild west' und 'wild AND west'

Suche den Begriff "wild" und den Begriff "west".

Zulässige Syntax für Sonderzeichen

Die nachstehende Tabelle zeigt die zulässige Syntax für alle Sonderzeichen mit Ausnahme von Sternchen-Platzhaltern und Bindestrichen, die weiter oben unter Zulässige Syntax für den Sternchen-Platzhalter (*) und Zulässige Syntax für den Bindestrich (-) behandelt wurden.

Diese Zeichen werden nicht als Sonderzeichen angesehen, wenn sie in einer Phrase vorkommen, und daher entfernt.

Hinweis

Dieselben Einschränkungen hinsichtlich der Angabe von Zeichenfolgenliteralen gelten auch für die Abfragezeichenfolge. So müssen beispielsweise die Apostrophe mit Escapezeichen versehen werden, usw. Weitere Informationen zur Formatierung von Zeichenfolgenliteralen finden Sie unter Zeichenfolgenliterale.

Zeichen oder Syntax Beispiele zur Verwendung und Bemerkungen
Kaufmännisches Und (&)

Das kaufmännische Und entspricht AND und kann wie folgt angegeben werden:

  • 'a & b'
  • 'a &b'
  • 'a&b'
  • 'a& b'
Senkrechtstrich (|)

Der Senkrechtstrich entspricht OR und kann wie folgt angegeben werden:

  • 'a|b'
  • 'a |b'
  • 'a | b'
  • 'a| b'
Anführungszeichen (")

Anführungszeichen werden verwendet, um eine Folge von Begriffen abzugrenzen, in der die Reihenfolge und der relative Abstand wichtig sind. Beispiel: In der Abfragezeichenfolge 'learn "full text search"' ist "full text search" eine Phrase. In diesem Beispiel kann "learn" vor oder nach der Phrase kommen oder in einer anderen Spalte vorhanden sein (wenn der Textindex in mehr als einer Spalte erstellt wurde), aber die exakte Phrase muss in einer Spalte gefunden werden.

Klammern ()

Klammern werden verwendet, um die Reihenfolge der Auswertung von Ausdrücken anzugeben, wenn sie von der Standardreihenfolge abweicht. Beispiel: 'a AND (b|c)' wird als a und b oder c interpretiert.

Hinweise zur Standardreihenfolge der Auswertung finden Sie unter Operatorvorrang in einer CONTAINS-Suchbedingung.

Tilde (~)

Die Tilde ist gleichwertig mit NEAR und hat keine besonderen Syntaxregeln. Die Abfragezeichenfolge 'full~text' entspricht 'full NEAR text' und wird interpretiert als der Begriff "full" in einem maximal zehn Begriffe betragenden Abstand vom Begriff "text".

Eckige Klammern [ ]

Eckige Klammern werden in Verbindung mit dem Schlüsselwort NEAR verwendet, um den Abstand anzugeben. Wenn eckige Klammern in anderer Form verwendet werden, wird ein Fehler zurückgegeben.

Siehe auch