online 1
gast (50)

/ Forum / Datenbanken

DatenbankenDatenbanken

Fragevon Robert_TM vom 23.03.2019, 10:50 Options

[ORACLE]: Werte selektieren, in denen andere Zeichen als a-z und 0-9 vorkommen

Hallo zusammen,
ich möchte auf einer Oracle-Datenbank folgende SQL-Abfrage durchführen:

Selektiere alle Einträge aus Spalte "Artikel", die andere Zeichen als a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,0,1,2,3,4,5,6,7,8,9 enthalten. Selektiert wird so z.B. der Artikel ABC_01, nicht aber der Artikel ABC01.

SELECT Artikel
FROM Datenbank
where ????

Wäre klasse, wenn jemand eine Idee hätte.

Vielen Dank und Grüße

Robert


Antwort schreiben

Antwort 1 von hendrikw vom 23.03.2019, 12:27 Options

Das könntest Du mit TRANSLATE machen, indem Du in den FROM-String alle Zahlen und Buchstaben reinschreibst und den TO-String leer lässt. Dann musst Du prüfen, ob da noch was bei raus kommt.
mfg
Hendrik

Antwort 2 von Robert_TM vom 23.03.2019, 13:23 Options

Hallo Hendrik,
vielen Dank schon mal für deine Antwort!
Da Oracle für mich leider noch ein großes Orakel ist, wäre es klasse, wenn du noch ein Beispiel posten könntest. Wie müsste eine entsprechende Abfrage aussehen?

Vielen Dank für deine Hilfe und Grüße

Robert

Antwort 3 von hendrikw vom 23.03.2019, 14:32 Options

Das sieht in etwa so aus:

SELECT Artikel
FROM Datenbank
where translate(Artikel, '#01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' ,'#') is not null


Wichtig ist, dass im TO-String ('#') überhaupt was drin steht, sonst kommt gar nichts raus.
Du solltest Dir aber im Klaren sein, dass dabei die Tabelle "Datenbank" ein Mal komplett durchgelesen wird, weil bei sowas kein Index zieht; d.h., auf einer großen Tabelle könnte das länger dauern...

mfg
Hendrik

Antwort 4 von Robert_TM vom 23.03.2019, 14:43 Options

Hallo Hendrik,
wenn ich die Abfrage

Zitat:
SELECT Artikel
FROM Datenbank
where translate(Artikel, '#01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' ,'#') is not null


starte, werden alle Einträge selektiert. Es scheint keine Filterung durchgeführt zu werden. Es erscheinen also auch werte mit - oder / etc.

Woran kann das liegen?

Viele Grüße

Robert

Antwort 5 von hendrikw vom 23.03.2019, 14:57 Options

Das war doch das Ziel der Übung ?
Alle Einträge, die im Feld "Artikel" irgendein Zeichen enthalten, dass nicht eine Zahl oder ein Buchstabe ist.

Falls Du nach einem bestimmten Sonderzeichen suchst, ist der Operator "like" eine gute Wahl oder bei Oracle geht auch INSTR:
...
where INSTR(Artikel,'_') > 0

In dem Beispiel wird nach dem Unterstrich ('_') gesucht.
mgf
hendrik

Antwort 6 von Robert_TM vom 23.03.2019, 15:35 Options

Hallo Hendrik,
ich meinte, dass auch Werte wie ABC01 selektiert werden. Und gerade diese sollten doch nicht selektiert werden.

Viele Grüße

Robert

Antwort 7 von hendrikw vom 23.03.2019, 15:52 Options

Sorry , bei mir funktioniert das so. Eine Ferndiagnose ist da aber sehr schwierig.
Was für ein Datentyp ist das Feld "Artikel" ?
Hast Du in der Translate-Funktion die Buchstaben auch in Groß- und Kleinschreibung angegeben ?
Evtl. spielt der Zeichensatz noch eine Rolle...
mfg
Hendrik

Ähnliche Themen

oracle cluster ohne rac
Flori_w  16.01.2007 - 88 Hits -

E-Mail-Adressen, in denen nur folgende Zeichen vorkommen...
Ruben80  22.03.2007 - 74 Hits - 3 Antworten

Hallo liebe Supportnet User,
blasser  29.06.2007 - 115 Hits - 1 Antwort

aus täglich 1440 Datensätzen selektieren
Grandpa  05.12.2007 - 136 Hits - 2 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Sun Jan 25 18:15:21 2026