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!