ms sql will text nicht sortieren

hikeda_ya

Erfahrenes Mitglied
meine abfrage lautet

Code:
select adressen.[firmen-id], name, straße, postleitzahl, ort, produkte.produkte from adressen
left join produkte on adressen.[firmen-id] = produkte.[firmen-id]
where produkte like '%Elektromagnete%'
order by adressen.[postleitzahl]

und die fehlermeldung des SQL Query Analyzer

Server: Nachr.-Nr. 420, Schweregrad 16, Status 1, Zeile 1
Die Datentypen text, ntext und image können in einer ORDER BY-Klausel nicht verwendet werden.

was mach ich falsch?
 
Zuletzt bearbeitet:
Ein freundliches Hallo zurück

Es steht doch schon in der Fehlermeldung: Die Spalte nach der du sotieren willst, ist vom Datentyp text, ntext oder image. Und nach denen kann nicht sortiert werden.
2 Möglichkeiten:
Du änderst den Datentyp der Spalte
oder
Du lässt die Sortierung weg.

Mir stellt sich nur die Frage, warum man für Felder, die Postleitzahlen enthalten, diese Datentypen verwendet :confused:
 
niggo hat gesagt.:
...Die Spalte nach der du sotieren willst, ist vom Datentyp text, ntext oder image. Und nach denen kann nicht sortiert werden.
...
Mir stellt sich nur die Frage, warum man für Felder, die Postleitzahlen enthalten, diese Datentypen verwendet :confused:

Ich weiß zwar nicht um welches DBMS es geht, aber sortieren nach Text sollte jedes können. ;-)
Text für Postleitzahlen braucht man um auch diejenigen aus dem Leitzahlbereich 0 sauber erfassen zu können. 01234 würde als Zahl 1234 gespeichert und bei einer Abfrage: between 01200 and 01250
wahrscheinlich nie gefunden. Wenn man auch ausländische Postkennungen mit aufnehmen möchte, bleibt sowieso nur Text als Datentyp.

mfg
 
mschuetzda hat gesagt.:
Ich weiß zwar nicht um welches DBMS es geht, aber sortieren nach Text sollte jedes können. ;-)
Text für Postleitzahlen braucht man um auch diejenigen aus dem Leitzahlbereich 0 sauber erfassen zu können. 01234 würde als Zahl 1234 gespeichert und bei einer Abfrage: between 01200 and 01250
wahrscheinlich nie gefunden. Wenn man auch ausländische Postkennungen mit aufnehmen möchte, bleibt sowieso nur Text als Datentyp.

mfg


danke genau darum geht es - da ich weltweite adressen zu verwalten habe -

ich verwende ms sql - kannst du mir da einen tip geben wie ich da text sortieren kann?
 
mschuetzda hat gesagt.:
Ich weiß zwar nicht um welches DBMS es geht,
im titel steht "ms sql" demnach würde ich mal Microsoft SQL Server behaupten ;)
mschuetzda hat gesagt.:
aber sortieren nach Text sollte jedes können. ;-)
Nein, kann eigentlich gar keins.
Grund. Text enthält BLOB (Binary Large Object)-Daten und nach diesen kann nicht sotiert werden
mschuetzda hat gesagt.:
Text für Postleitzahlen braucht man um auch diejenigen aus dem Leitzahlbereich 0 sauber erfassen zu können. 01234 würde als Zahl 1234 gespeichert und bei einer Abfrage: between 01200 and 01250
wahrscheinlich nie gefunden. Wenn man auch ausländische Postkennungen mit aufnehmen möchte, bleibt sowieso nur Text als Datentyp.

mfg
Ich hab ja auch nicht behauptet, dass der Datentyp zu int geändert werden soll. Es gibt Datentypen, die dafür um einiges besser geeignet sind als text.

@Thread Starter
Wenn du sicher stellen kannst, dass du nur 5stellige Postleitzahlen speicherst, dann empfiehlt sich char(5) als Datentyp. Das ist um einiges performanter als Text und lässt sich auch sortieren.
Wenn du das nicht sicherstellen kannst, nutz' varchar(max. Länge der Postleitzahl). Das ist auch schneller als text und lässt sich auch sortieren.

Du solltest den Datentyp text nur verwenden, wenn du in einem Attribut extrem große Datenmengen speichern willst. Dazu gehören mehr als 4096 Zeichen und bis zu 4 GB. Und ich glaube, dass es auf diesem Planeten nicht eine Postleitzahl gibt, die mehr als 4000 Zeichen hat ;) )

Tipp: Du solltest dir die Datentypen vom SQL mal genauer anschauen, um deren Eigenheiten besser kennen zu lernen.
 
vielen dank - für deine hilfe

ich stehe noch ganz am anfang von SQL - bin beruflich quasi ins kalte wasser geworfen worden und versuch grad das schwimmen zu lernen.

den tip mit dem varchar (hoffe der dateityp ist richtig geschrieben) werde ich ausprobieren

(und wieder was gelert dachte varchar sei für zahlen)
 
Kannst du dich aber in Zukunft bitte an die Netiquette halten? Die Groß- Kleinschreibung hast du doch nciht erst gestern gelernt oder? ;)

Wie gesagt, schau dir Datentypen von SQL an.

Falls dein Problem gelöst ist, dann setze es bitte auf "Erledigt".

schönes WE
 
ist ok werd ich machen -


ich habe mir angewöhnt grundsätzlich alles klein zu schreiben. ich weiss ist zwar eine nicht soo tolle angewohnheit - aber hat sich so eingebürgert.

vielen dank noch mal für deine hilfe
 
hikeda_ya hat gesagt.:
ich habe mir angewöhnt grundsätzlich alles klein zu schreiben. ich weiss ist zwar eine nicht soo tolle angewohnheit - aber hat sich so eingebürgert.
Das haben sich viele angewöhnt. Trotzdem ist einen Regel dieses Forums, dass die Groß-/Kleinschreibung beachtet wird. Und diese Regel hast du bei der Anmeldung im Forum anerkannt.
 
kein Problem - ich werde mich bessern.

ein Versprechen das ich alles richtig schreibe kann ich nicht geben, da ich in deutscher Gramatik immer ne riesen Niete war.
 
Zurück