b.denger 0 Geschrieben 4. August 2014 Melden Teilen Geschrieben 4. August 2014 Hallo Leute, Ich stehe vor einer kleinen Herausforderung, ich habe eine Tabelle mit Kontakten. Diese Kontakte haben eine Telefonnummer. Ich möchte auf diese Telefonnummer filtern. In der Tabelle hat die Telefonnummer jedoch an manchen stellen Leerzeichen, diese Leerzeichen kann ich nicht einfach entfernen, da ich diese an anderen Stellen benötige. Der Parameter den ich als Filter nutzen möchte, hat jedoch keine Leerzeichen mehr. Gibt es nun eine Möglichkeit dem Filter z.B. zu sagen das er die Leerzeichen in der Spalte nicht berücksichtigen soll? oder bleibt mir da nur die Möglichkeit die Leerzeichen aus der Telefonnummer zu entfernen? Über tipps und tricks die mir zur Lösung helfen, würde ich mich sehr freuen :) MfG B.Denger Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 4. August 2014 Melden Teilen Geschrieben 4. August 2014 Ein "SELECT REPLACE(Telefonnr, ' ', '') AS TelOhneLeerzeichen FROM ..." könnte gehen. Zitieren Link zu diesem Kommentar
b.denger 0 Geschrieben 4. August 2014 Autor Melden Teilen Geschrieben 4. August 2014 Ich habe SELECT * FROM Contact WHERE REPLACE(TelefonnumerMitLeerzeichen,' ','') = TelefonnummerOhneLeerzeichen genommen, Vielen Dank für die Hilfe Replace war mir bisher noch nicht bekannt Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 4. August 2014 Melden Teilen Geschrieben 4. August 2014 Prima :) Zitieren Link zu diesem Kommentar
b.denger 0 Geschrieben 4. August 2014 Autor Melden Teilen Geschrieben 4. August 2014 Ich habe nun auch mehrere Character entfernen können, indem ich die Replace() aufrufe verschachtelt habe= SELECT * FROM Contact WHERE REPLACE( REPLACE( REPLACE(TelefonnumerMitLeerzeichen,'-','') //entfernen des Minuszeichens ,'/','') //Slash-Zeichens ,' ','') = TelefonnummerOhneLeerzeichen //und Leerzeichens Das ist zwar schwer lesbar aber bringt mir den perfekten nutzen. Denn oftmals beinhalten Telefonnummern ja die verschiedensten Zeichen :) Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 4. August 2014 Melden Teilen Geschrieben 4. August 2014 Das ist zwar schwer lesbar aber bringt mir den perfekten nutzen. Denn oftmals beinhalten Telefonnummern ja die verschiedensten Zeichen :) Du könntest natürlich auch eine Skalarwertfunktion erstellen. Der übergibst Du dann die Telefonnummer. In der Funktion kannst Du die verschiedenen Replace-Aktionen laufen lassen. http://msdn.microsoft.com/de-de/library/ms186755.aspx Die Skalarwertfunktion kannst Du in einem normalen SELECT DeineFunktion(deinWert) as NeuerWert benutzen. Dann ist der schwer lesbare Teil gekapselt. ;) Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 4. August 2014 Melden Teilen Geschrieben 4. August 2014 (bearbeitet) Evtl. könntest Du hier auch besser eine der REGEXP_... Funktionen nutzen (z.B. REGEXP_REPLACE ;)) http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions130.htm ... quatsch... wie komm ich'n jetzt auf ORACLE? ;-) ... aber ich könnte mir vorstellen T SQL bietet da auch was! bearbeitet 4. August 2014 von Cybquest Zitieren Link zu diesem Kommentar
zahni 554 Geschrieben 5. August 2014 Melden Teilen Geschrieben 5. August 2014 Für die Performance optimaler wäre es vermutlich, wenn man in einer anderen Spalte die Telefonnummer nochmal ohne Leer- und Sonderzeichen speichert. Solche String-Operationen in der Where-Klausel sind u.U. Residual, was bei großen Tabellen die Performance-Problemen führt. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.