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 ;
