Aus KARL-HEINZ soll Karl-Heinz werden

Schriftbild, Absätze und Auflistungen einstellen


bertol
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Di 18. Mai 2010, 10:29

Aus KARL-HEINZ soll Karl-Heinz werden

Beitrag von bertol »

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!!

bertol
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Di 18. Mai 2010, 10:29

Beitrag von bertol »

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 ;

Antworten