b.denger 0 Geschrieben 4. August 2014 Melden 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
Cybquest 36 Geschrieben 4. August 2014 Melden Geschrieben 4. August 2014 Ein "SELECT REPLACE(Telefonnr, ' ', '') AS TelOhneLeerzeichen FROM ..." könnte gehen.
b.denger 0 Geschrieben 4. August 2014 Autor Melden 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
b.denger 0 Geschrieben 4. August 2014 Autor Melden 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 :)
Sunny61 833 Geschrieben 4. August 2014 Melden 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. ;)
Cybquest 36 Geschrieben 4. August 2014 Melden 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
zahni 587 Geschrieben 5. August 2014 Melden 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.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden