Einzelnen Beitrag anzeigen

jensw_2000
(Gast)

n/a Beiträge
 
#24

Re: Umlaute anzeigen egal ob Ü oder UE usw.

  Alt 30. Sep 2005, 13:12
Nimm doch einfach Jellys Vorschlag und erstelle dir in deiner MySQL DB eine UDF (Userdefined Function).

Der (my)SQL Server erledigt die Zeichenersetzung flink während des Selects mit. Einfacher gehts doch garnicht. Zudem erschlägt man alle Sonderfälle auf einmal (Groß-Kleinschreibung, Umlaute,'ß'-'ss') und braucht nicht hunterdt IF's und POS(bla) im Delphi-Code verbauen.

Hier ein Beispiel in MSSQL Syntax.
Den Code kannst du mit einem kurzen Blick ins MySQL-Handbuch innerhalb weniger Minuten für MySQL anpassen.

SQL-Code:
CREATE Function ReplaceSpecialChars
  @InputParam VARCHAR(4000) -- ein Eingabeparameter an den du deinen Suchbegriff übergibst
  RETURNS VarChar(4000) -- Die Funktion liefert Varchar zurück
AS
BEGIN
  DECLARE @TMP VARCHAR(4000) -- eine Temporäre Variable deklarieren
  SET @TMP = LOWER(@InputParam) -- Suchbegriff als LowerCase in @TMP einlesen
  SET @TMP = REPLACE(@TMP,'ß','ss') -- gewünschte Zeichen ersetzen
  SET @TMP = REPLACE(@TMP,'ä','ae')
  SET @TMP = REPLACE(@TMP,'ö','oe')
  SET @TMP = REPLACE(@TMP,'ü','ue')

  RETURN @TMP -- die fertige Zeichenkette aus Result zurückgeben
END

Verwendung :

SQL-Code:
  
SELECT Vorname,Nachname FROM Personal WHERE dbo.ReplaceSpecialChars(Nachname) = LOWER(@Suchbegriff)

Falls du die Funktion sehr häufig für ein und die selben Feler bestimmter Tabellen benutzt, kannst du in der Tabelle auch flink für jedes (häufig zum suchen verwendete) Feld ein berechnetes Feld hinzufügen. Als Formel für das berechnete Feld nimmst du in diesem Fall auch "dbo.ReplaceSpecialChars(<Feldname>)".


Schöne Grüße,
Jens
  Mit Zitat antworten Zitat