Heim >Datenbank >MySQL-Tutorial >Wie führt man in Oracle eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung durch?

Wie führt man in Oracle eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung durch?

Barbara Streisand
Barbara StreisandOriginal
2025-01-17 11:31:09771Durchsuche

How to Perform Case-Insensitive Searches in Oracle?

Führen Sie eine Suche ohne Berücksichtigung der Groß-/Kleinschreibung in der Oracle-Datenbank durch

Vergleichsoperatoren (wie LIKE, = usw.) in der Oracle-Datenbank berücksichtigen standardmäßig die Groß-/Kleinschreibung. Dies kann eine Herausforderung darstellen, wenn Sie Daten unabhängig von der Groß- und Kleinschreibung durchsuchen müssen. Um dieses Problem zu lösen, bietet Oracle mehrere Möglichkeiten zur Durchführung von Suchvorgängen ohne Beachtung der Groß- und Kleinschreibung, ohne auf Volltextindizes angewiesen zu sein.

Methode 1: Fallkonvertierung

Sie können die Funktion UPPER() oder LOWER() verwenden, um zu erzwingen, dass alle Daten in der gleichen Groß-/Kleinschreibung angegeben werden. Zum Beispiel:

<code class="language-sql">select * from my_table where upper(column_1) = upper('my_string');</code>

oder

<code class="language-sql">select * from my_table where lower(column_1) = lower('my_string');</code>

Dies erfordert möglicherweise einen vollständigen Tabellenscan, wenn column_1 nicht auf upper(column_1) bzw. lower(column_1) indiziert ist. Um dies zu vermeiden, erstellen Sie einen funktionsbasierten Index:

<code class="language-sql">create index my_index on my_table ( lower(column_1) );</code>

Fügen Sie für den LIKE-Operator % um die Suchzeichenfolge ein:

<code class="language-sql">select * from my_table where lower(column_1) LIKE lower('my_string') || '%';</code>

Methode 2: Regulärer Ausdruck

Die Funktion REGEXP_LIKE(), die ab Oracle 10g eingeführt wurde, ermöglicht eine Suche ohne Berücksichtigung der Groß-/Kleinschreibung durch Angabe des Übereinstimmungsparameters „i“:

<code class="language-sql">select * from my_table where regexp_like(column_1, '^my_string$', 'i');</code>

Um dies als Gleichheitsoperator zu verwenden, geben Sie den Anfang und das Ende der Zeichenfolge an (mit ^ und $):

<code class="language-sql">select * from my_table where regexp_like(column_1, '^my_string$', 'i');</code>

Für eine LIKE-äquivalente Suche entfernen Sie ^ und $. Beachten Sie, dass die Suchzeichenfolge Zeichen enthalten kann, die von der Engine für reguläre Ausdrücke unterschiedlich interpretiert werden.

Methode 3: Konfiguration auf Sitzungsebene

Der NLS_SORT-Parameter definiert die Sortierreihenfolge von Vergleichen, einschließlich = und LIKE. Sie können die Sortierung ohne Berücksichtigung der Groß-/Kleinschreibung für alle Abfragen in einer Sitzung aktivieren, indem Sie sie auf BINARY_CI:

festlegen
<code class="language-sql">alter session set nls_sort=BINARY_CI;</code>

Möglicherweise möchten Sie NLS_COMP auch auf LINGUISTIC setzen, um einen Sprachvergleich zu erzwingen:

<code class="language-sql">alter session set nls_comp=LINGUISTIC;</code>

Um die Leistung zu verbessern, können Sie einen Sprachindex erstellen:

<code class="language-sql">create index my_linguistc_index on my_table (NLSSORT(column_1, 'NLS_SORT = BINARY_CI'));</code>

Das obige ist der detaillierte Inhalt vonWie führt man in Oracle eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn