# numerische werte



## Guest (27. Jul 2005)

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._


----------



## DP (27. Jul 2005)

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)..."


----------



## robertpic71 (27. Jul 2005)

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


----------



## Gast (28. Jul 2005)

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


----------



## Bleiglanz (28. Jul 2005)

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)


----------



## robertpic71 (28. Jul 2005)

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


----------



## Gast (28. Jul 2005)

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


----------

