1 Buchstabe gross in MYSQL Tabelle

Du hast ein Problem mit der Datenbank oder eine SQL Abfrage - hier bist Du richtig
Antworten
manne35
Beiträge: 31
Registriert: Mi 12. Mai 2010, 15:22

1 Buchstabe gross in MYSQL Tabelle

Beitrag 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
Doc Olson
Beiträge: 536
Registriert: Mo 10. Mai 2010, 08:54

Re: 1 Buchstabe gross in MYSQL Tabelle

Beitrag 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.
manne35
Beiträge: 31
Registriert: Mi 12. Mai 2010, 15:22

Re: 1 Buchstabe gross in MYSQL Tabelle

Beitrag 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
Xantiva
Beiträge: 948
Registriert: Mo 10. Mai 2010, 16:26
Shop Version: 1.0.10 [dev]
Kontaktdaten:

Re: 1 Buchstabe gross in MYSQL Tabelle

Beitrag 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 ...
Mein Shop: http://www.basteln-selbermachen.de
manne35
Beiträge: 31
Registriert: Mi 12. Mai 2010, 15:22

Re: 1 Buchstabe gross in MYSQL Tabelle

Beitrag 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.
manne35
Beiträge: 31
Registriert: Mi 12. Mai 2010, 15:22

Re: 1 Buchstabe gross in MYSQL Tabelle

Beitrag 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
yogi
Administrator
Beiträge: 292
Registriert: Do 6. Mai 2010, 14:16
Shop Version: die aktuelle
Wohnort: Köln
Kontaktdaten:

Re: 1 Buchstabe gross in MYSQL Tabelle

Beitrag 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.
Antworten