Hallo,
ich muss hier für die Firma einen Briefentwerfen, welcher von einer MYSql-Datenbank die Daten zieht. dank pdflatexdb ist das kein größerer Aufwand. Nun habe ich allerdings das Problem, dass Alle Adressdaten (ca. 12.000) in Großbuchstaben abgelegt sind KARL-HEINZ EBBES STRASSE etc.
gibt es in LaTex eine Möglichkeit JEDES Wort aus einer Variable in Großbuchstaben anfagen zu lassen. Ich hatte mir sowas vorgestellt \funktion{EBBES STRASSE} liefert den Wert Ebbes Str oder /funktion{KARL-HEINZ} liefert Karl-Heinz. Das Paket mfirstuc habe ich schon angeschaut aber der Macht dann Ebbes str oder Karl-heinz daraus und das sieht nicht schön aus.
Oder
Weiss jemand ob es eine Abfrage-Funktion in MYSql gibt, welche das richtig beherscht?
Im MS-Word gibt es die Funktion \Cpas. Die kann das Relativ gut. Ich möchte Word aber unter allen Umständen meiden!!
Aus KARL-HEINZ soll Karl-Heinz werden
Ich habe eine SQL-Funktion geschrieben mit der geht zumindes jedes wort und jedes wort getrennt durch -
DELIMITER ; DROP FUNCTION IF EXISTS UpLower; DELIMITER $$ CREATE FUNCTION UpLower (str VARCHAR(255)) RETURNS VARCHAR(255) Begin DECLARE lowtext VARCHAR(255); DECLARE uplowtext VARCHAR(255); DECLARE tmptext VARCHAR(255); DECLARE searchtext VARCHAR(1); DECLARE spacepos INT; DECLARE spacespos INT; IF ISNULL(str) THEN RETURN NULL;END IF; SET lowtext = LOWER(str); SET uplowtext = CONCAT(UPPER(LEFT(lowtext,1)),MID(lowtext,2)); SET tmptext = uplowtext; SET searchtext = ' '; SET spacepos = INSTR(tmptext, searchtext); SET spacespos = spacepos; WHILE spacepos > 0 or searchtext =' ' DO SET tmptext = MID(tmptext,spacepos + 1); SET tmptext = CONCAT(UPPER(LEFT(tmptext,1)),MID(tmptext,2)); SET uplowtext = CONCAT(LEFT(uplowtext,spacespos ),tmptext); SET spacepos = INSTR(tmptext, searchtext); SET spacespos = spacespos + spacepos; IF spacepos = 0 and searchtext = ' ' then SET tmptext = uplowtext; SET searchtext = '-'; SET spacepos = INSTR(tmptext, searchtext); SET spacespos = spacepos; END IF; END WHILE; RETURN uplowtext; END$$ DELIMITER ;