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
Freigeben: 2025-01-17 11:31:09
Original
769 Leute haben es durchsucht

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>
Nach dem Login kopieren

oder

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

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage