numerische werte

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
guten tag forum,

kennt jemand den sql befehl womit ich die daten wegsortieren kann die nummerische werte enthalten wie z.B A38JUZ? Also nur wenn in der Selection reiner text drin ist wie AKLTRE, soll eingelesen werden.

Vielen dank

L-ectron-X hat das Thema verschoben.
 
quick&dirty in mysql würde ich sagen

"...where (substr(spalte, '0') = 0 and substr(spalte, '1') = 0 and substr(spalte, '2') = 0 and substr(spalte, '3') = 0 and substr(spalte, '4') = 0 and substr(spalte, '5') = 0 and substr(spalte, '6') = 0 and substr(spalte, '7') = 0 and substr(spalte, '8') = 0 and substr(spalte, '9') = 0)..."
 
Hier noch ein Lösungsvorschlag (aber auch nicht gerade ein Muster für Schulungsunterlagen...)

select ..... where feld not like '%0%' and feld not like '%1%' and feld not like '%2%' and feld not like '%3%' and feld not like '%4%' and feld not like '%5%' and feld not like '%6%' and feld not like '%7%' and feld not like '%8%' and feld not like '%9%'

Die Abfrage sollte für alle gängigen Datenbanken funktionieren.

Elegantere Lösungen sind aufwändiger und nicht mehr für alle Datenbanken zu gebrauchen (..außer ich irgendeine Möglichkeit vergessen).

LG Rob
 
Erst mal vielen Danke für die Antworten.
Ich arbeite mit MYSQL. Da ich bei dieser Selection ungefähr 300000 Datensätze rauspicken muss, ist es ziemlich aufwendig mit deinem Befehl zu arbeiten Robert, da eine Selection etwa 0,20 Sekunden dauert. Muss mich nach Lösung wie NOT LIKE '[0-9]' umschauen, hab bisher zig mal ausprobiert, ohne Erfolg...
oder kennt das einer bereits? :bahnhof:

Danke für jeden Tip
 
auch in mysql gibts regexe mit REGEXP

oder auch

WHERE NOT (FIND_IN_SET(spalte,'0,1,2,3,4,5,6,7,8,9')>0)
 
Wenn es nicht stört, dass es nicht bei jeder DB läuft, gibt es auch noch:

select ..... where feld not rlike '[0-9]'

bzw.

select ..... where feld not regexp '[0-9]'


Solange du bei MySQL bleibts solltest du damit kein Problem haben.

Noch ein Frage: Was dauert 0,20 Sekunden? Das interpretieren?

Bei oft verwendeten/langen SQL-Anweisungen kann hier ein PreparedStatement sinnvoll sein. In diesem Fall spart sich der Server das interpretieren der SQL-Anweisungen.

Wenn du nicht alle Sätze abarbeiten willst, solltest du eventuell auch an Limitieren der Sätze denken. Ich meide zwar MySQL, aber es wird dort auch nicht anders sein, dass hier alle Sätze vorbereitet werden.

LG Rob
 
Danke schön Robertpic71 und an all Anderen die hier schrieben,

Robertpic71, dein Vorschlag mit REGEXP '[0-9]' funktioniert einwandfrei. So, nun zu deiner Frage was 0,20 sec dauert:
nämlich dein erster Vorschlag mit
select ..... where feld not like '%0%' and feld not like '%1%'...

preparedStatement benutze ich ja schon, und ich sortiere ja schon "nur" 1000 Datensätze pro gefundenem Eintrag. in 8 Tabellen mit etwa 100 gefundene (dinstict) verschieden Einträge, jeweils 1000 letze Datensätze von jedem Eintrag. Da muss man schon aufpassen dass man nichts falsch macht damit es nicht zu lange dauert. jetzt schon dauert es so um die 20 min.

nochmals vielen dank 🙂
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben