# MySQL: Ändern von Kleinschreibung in Großschreibung (name in Name)



## M81 (13. April 2005)

Hallo,

ich möchte gerne in einer Datenbank in einer Tabelle einen Cronjob laufen lassen, der mir automatisch den Inhalt überprüft und dann immer den ersten Buchstaben eines Wortes als Großbuchstaben macht.

Um genauer zu sein: Ich verwende das Shopsystem osCommerce. Einige Kunden registrieren sich jetzt als
"vorname nachname, straße, ort". das möchte ich in
"Vorname Nachname, Straße, Ort" umwandeln.

Dieser Inhalt wird in der Tabelle address_book gespeichert, allerdings in verschiedenen Reihen.

Ist so ein Skript möglich, oder funktioniert das gar nicht?
Ich habe von PHP leider keine Ahnung, muss also Euch um Hilfe anbetteln. 
Ach ja, bei meinem Provider kann ich Cronjobs nur als Skript laufen lassen, über Kommandozeile geht das nicht.

Besten Dank für jegliche Antwort schon jetzt
M81


----------



## Andreas Gaisbauer (14. April 2005)

M81 hat gesagt.:
			
		

> Hallo,
> Um genauer zu sein: Ich verwende das Shopsystem osCommerce. Einige Kunden registrieren sich jetzt als
> "vorname nachname, straße, ort". das möchte ich in
> "Vorname Nachname, Straße, Ort" umwandeln.
> ...



Am besten schreibst du dir ein PHP Skript das die Query ausführt...


```
<?php
$con = mysql_connect("host","user","pass") or die ("Connection Error: ".mysql_error);
mysql_selectdb("datenbank");

$query = 'UPDATE address_book 
		  SET vorname = UPPER(SUBSTRING(vorname,1,1)),
			  nachname = UPPER(SUBSTRING(nachname,1,1)),
			  strasse = UPPER(SUBSTRING(strasse,1,1)),
			  ort = UPPER(SUBSTRING(ort,1,1))
';

mysql_query($query) or die("Query Error: ".mysql_error);

//
// hier könnte Code fürs Logging reinkommen
//
mysql_close($con);

?>
```
Das ist nur ein ein Beispiel. Wenn du das testen willst, mach auf jeden Fall vorher ein Backup der Kundendaten. Wenn du sehr viele Kundendaten hast, kann es passieren das das Script sehr lange (zu lange) läuft. Da muss aber schon richtig was an Daten in der DB stehen.

Vorname, Nachname, Ort, Strasse sind mit den Spaltenname der Tabelle zu ersetzen

Wenn es zu lange dauern sollte, dann könnte man die Tabelle um ein Feld erweitern in dem festgehalten wird, ob der Datensatz schonmal behandelt wurde - das würde dann bedeutend schneller gehen (hier werden jetzt immer alle DS bearbeitet)...

bye


----------



## M81 (14. April 2005)

Hallo,

also das Skript habe ich probiert. Hat leider nicht so ganz geklappt.
Es hat zwar den ersten Buchstaben in enen Großbuchstaben umgewandelt, allerdings war danach nur noch EIN Buchstabe in jeder Spalte.
Der komplette Rest wurde abgeschnitten.

Wie kann ich das denn ändern, dass er zwar den ersten Buchstaben ändert, den Rest aber behält?


----------



## Andreas Gaisbauer (15. April 2005)

Ahhh Sorry - is mir nicht aufgefallen - habs mit einer Tabelle getested, in der nur einstellige Werte drinnen waren... Versuchs mal mit folgender Query


```
$query = 'UPDATE address_book
          SET vorname = CONCAT(UPPER(SUBSTRING(vorname,1,1)),SUBSTRING(vorname FROM 2)),
              nachname = CONCAT(UPPER(SUBSTRING(nachname,1,1)),SUBSTRING(nachname FROM 2)),
              strasse = CONCAT(UPPER(SUBSTRING(strasse,1,1)),SUBSTRING(strasse FROM 2)),
              ort = CONCAT(UPPER(SUBSTRING(ort,1,1)),SUBSTRING(ort FROM 2))';
```

ciao


----------

