Seite 1 von 1

1 Buchstabe gross in MYSQL Tabelle

Verfasst: Mo 26. Jul 2010, 06:03
von manne35
Hallo,
Ich habe eine Spalte in der viele Inhalte total grossgeschrieben sind,
wenn ich nur den ersten Buchstaben gross schreiben will in einer Spalte einer Mysql Tabelle,
versuche ich dies so, aber dies führt zur Verdoppelung des ersten Buchstabens.

Code: Alles auswählen

UPDATE `tabelle_xy` SET name = CONCAT(UPPER(LEFT(name, 1)), RIGHT(name, LENGTH(name) - 1))

Code: Alles auswählen

Vorher   --->  Nachher
GEORGI         GEORGI
PAUL            PAUL
Südstadt        SSüdstadt    


Es sollten aber überall nur die ersten Buchstaben gross sein...?

Weiss jemand Rat ?
gruss manne

Re: 1 Buchstabe gross in MYSQL Tabelle

Verfasst: Mo 26. Jul 2010, 06:58
von Doc Olson
Ich vermute mal, das Problem liegt beim Umlaut. Das ist ein Multibyte-Char und zählt 2 Zeichen. Somit ist LENGTH(name) - 1 genau ein Zeichen länger als erwartet. Versuch's mal mit CHAR_LENGTH, das zählt auch Multibyte-Chars nur als ein Zeichen.

Re: 1 Buchstabe gross in MYSQL Tabelle

Verfasst: Do 29. Jul 2010, 17:33
von manne35
danke, klappt nicht,

ich will quasi , dass einfach alle Einträge einer Spalte nur den ersten Buchstaben gross haben,
also ganz normal großgeschrieben werden.

Naja, muss ichmal weitersuchen.

grussmanne

Re: 1 Buchstabe gross in MYSQL Tabelle

Verfasst: Do 29. Jul 2010, 17:52
von Xantiva
Wenn nicht direkt per SQL, bleibt noch der Weg ein kleines PHP Skript zu schreiben, was die Arbeit übernimmt. Nicht so elegant, aber bevor Du nichts findest ...

Re: 1 Buchstabe gross in MYSQL Tabelle

Verfasst: Do 29. Jul 2010, 18:19
von manne35
1. SQL Befehl ist einfach

Alles kleinschreiben:

UPDATE tabellenname SET name = LOWER(name)#

So werden alle klein, jetzt muss nur noch der 1 Buchstaben wieder gross,der Schlingel... ;) :) :D
m.

Re: 1 Buchstabe gross in MYSQL Tabelle

Verfasst: Do 29. Jul 2010, 19:15
von manne35
Oki hier kommts,
es lag am umlaut und zuerst alles kleinmachen hat gefelt...

Code: Alles auswählen

UPDATE tabellenname SET name = LOWER(name); UPDATE `tabellenname` SET name = CONCAT(UPPER(LEFT(name, 1)), RIGHT(name, CHAR_LENGTH(name) - 1))
Dank und grussmanne

Re: 1 Buchstabe gross in MYSQL Tabelle

Verfasst: Do 5. Aug 2010, 09:38
von yogi
Hi,

anstatt zuerst alles klein zu machen und die Zeichenlänge zu bestimmen wird auch folgendes funktionierne:

Nimm das erste Zeichen mache es groß und verbinde es mit dem kleinengemachten restlichen String:

Code: Alles auswählen

UPDATE tabelle SET name = CONCAT(UPPER(substr(name,1,1)), LOWER(substr(name,2)))
Hierbei ist es von vorteil das die Funktion substr "Multibyte Save" ist, was im ersten ansatz mit "LENGHT" zur Verdopplung des "S" führt.
Statt SUBSTR(name,1,1) kann natürlich auch LEFT(name,1) genutzt werden.