Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

sql-Abfrage m. ORDER BY ASC und Umlaute...





Frage

Hallo, ich möchte aus einer Tabelle Sätze, sortiert nach Namen ausgeben. Diese Namen enthalten jedoch auch Umlaute wie "ä" (Z.B. der Name "Gärtner"). Wenn ich die Sortierung aufsteigend erfolgen lasse (ORDER BY name ASC), dann werden mir Namen, die solche Umlaute enthalten, an die letzte Stelle gesetzt. Das heißt z.B. bei vorhandenen Namen "Gast","Gärtner","Gemmel" u. "Goppel" steht nach der Sortierung "Gärtner" hinter "Goppel". Das liegt daran, dass in der ASCII-Tabelle die Umlaute einen höheren Wert haben ("ä" entspr. ASCII 220, während die anderen "normalen" Buchstaben wie z.B. "o" alle niedrigere Werte haben. Was kann man machen, dass die Sortierung so ausfällt, dass "ä" wie "ae" einsortiert wird (die Weiterverarbeitung erfolgt mittels php)? Vielen Dank für Hinweise

Antwort 1 von FrankieH

Es kommt ja anscheinend auf den Zeichensatz an, den Du bei Deiner Eingabemaske verwendest.

Vielleicht verwendest Du ein Sortierfeld, das Du mittels einer Update-Anweisung immer nachführst. Dort ersetzt Du dann die Umlaute durch ae, oe, ue, manche machen sortieren diese Umlaute auch direkt ein (wird also behandelt wie a, o ,u).

Umlaute und ß werden halt etwas stiefmütterlich behandelt.



Antwort 2 von Gabi

Die Idee mit dem Sortierfeld ist gut.
Ich würde gerne das Erstellen eines extra Feldes dafür umgehen und das Sortierfeld in der Select-Abfrage erzeugen.
Das geht, wenn ich den Replace nur für einen Buchstaben mache. Möchte ich jedoch alle möglichen Umlaute ersetzen, dann laufe ich auf Fehler. Ich hab keine korrekte sql-Abfrage dafür.
Es funktioniert folgendes:
Select *,(replace (autorname,"ä","ae")) as name_s from tabelle order by name_s asc

Es funktioniert nicht:
Select *, (replace ((autorname,"ä","ae") && (autorname,"ö","oe"))) as name_s from tabelle order by name_s asc

auch nicht:
Select *,((replace(autorname,"ä","ae")) && (replace (autorname,"ö","oe"))) as name_s from tabelle order by name_s asc

Kann man was mit Regular Expressions machen???

Antwort 3 von hendrikw

Kannst Du die replaces nicht ineinander schachteln ?
replace(replace(name,"ä","ae"),"ö","oe")...
mfg
Hendrik

Antwort 4 von Gabi

Mit der Schachtelung klappt es !!!
Danke.
Ich versteh zwar nicht, warum eine Und-Verknüpfung nicht klappt, aber Hauptsache, ein Weg ist der Richtige...
mfg
Gabi

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: