it-swarm.com.de

Oracle DB: Wie schreibe ich eine Abfrage, die den Fall ignoriert?

Wie ich in title geschrieben habe, habe ich eine SQL-Abfrage, die auf Oracle DB ausgeführt wird, lassen Sie uns sagen:

SELECT * FROM TABLE WHERE TABLE.NAME Like 'IgNoReCaSe'

Wenn ich möchte, dass die Abfrage entweder "IGNORECASE", "ignorecase" oder Kombinationen davon zurückgibt, wie kann dies geschehen?

Ist das möglich?

48
zeroDivisible

Sie können ALTER SESSION-Anweisungen verwenden, um den Vergleich auf Groß- und Kleinschreibung zu setzen. Siehe dies FAQ .

alter session set NLS_COMP=ANSI;
alter session set NLS_SORT=BINARY_CI;

Für alle Besucher, die 8 Jahre nach der Annahme dieser ursprünglichen Antwort (für 10 gR2) besucht wurden:

Nach 10gR2 muss die Einstellung NLS_COMP 'LINGUISTIC' sein:

ALTER SESSION SET NLS_COMP=LINGUISTIC;
33
devio
Select * from table where upper(table.name) like upper('IgNoreCaSe');

Alternativ können Sie den unteren Teil durch den oberen ersetzen.

109
Hooloovoo

Sie können auf beiden Seiten der Where-Bedingung entweder eine untere oder eine obere Funktion verwenden

28
joe

Sie können auch reguläre Ausdrücke verwenden:

SELECT * FROM TABLE WHERE REGEXP_LIKE (TABLE.NAME,'IgNoReCaSe','i');
11
kMAP

Sie können die Funktion upper () in Ihrer Abfrage verwenden. Zur Steigerung der Leistung können Sie einen Funktionsbasisindex verwenden

 CREATE INDEX upper_index_name ON table(upper(name))
7
akf

Sie können beide Werte mit den Funktionen upper oder lower in Groß- oder Kleinbuchstaben umrechnen:

Select * from table where upper(table.name) like upper('IgNoreCaSe') or lower(table.name) like lower('IgNoreCaSe');
4
user3666177

... führen Sie auch die Konvertierung in eine obere oder untere außerhalb der Abfrage durch:

tableName:= UPPER(someValue || '%');

...

Select * from table where upper(table.name) like tableName 
3
ozczecho

Vergessen Sie auch nicht das Offensichtliche, müssen die Daten in den Tabellen einen Fall haben? Sie können Zeilen nur in Kleinbuchstaben einfügen (oder die vorhandenen DB-Zeilen in Kleinbuchstaben konvertieren) und von Anfang an damit fertig sein.

0
Gandalf