Einzelnen Beitrag anzeigen

ajmbarros
(Gast)

n/a Beiträge
 
#18

AW: Telefonnummer in Datenbank Finden

  Alt 5. Dez 2014, 09:37
Anbei die Funktionierende Lösung dank einer Procedure:

Code:
CREATE PROCEDURE STRTOINT(
  STRINGWERT VARCHAR(80) CHARACTER SET ISO8859_1 COLLATE ISO8859_1)
RETURNS(
  RESULT VARCHAR(80) CHARACTER SET ISO8859_1 COLLATE ISO8859_1)
AS
DECLARE VARIABLE laenge INTEGER;
DECLARE VARIABLE pos INTEGER;
DECLARE VARIABLE zeichen CHAR(1);
BEGIN
  /* Procedure body */
 
  laenge = char_length(:STRINGWERT);
  if (:laenge > 0) then
  begin
    pos = 1;
    while (:pos <= :laenge) do
    begin
      zeichen = substring(:STRINGWERT from :pos for 1);
      if (:zeichen in ('0','1','2','3','4','5','6','7','8','9')) then
        result = coalesce(:result, '')||:zeichen;
      pos = :pos + 1;
    end
  end
 
  SUSPEND;
END;
Und mit diesem select ist auch kein zweites Feld nötig:

Code:
select *
from ANSPR a
where (select result from STRTOINT(a.TEL)) = '0123456'
Ich hab natürlich einige Datenbank-Reads aber es hält sich in unter einer Sekunde.

Evtl. muss ich mit den Landesvorwahlen tricksen bzw. muss ich mal testen wie gut das mit einem like '%0123456' funktioniert, wenn ich vorher im Delphi-Code die Landesvorwahlen immer raus nehme. Nochmals vielen Dank!
  Mit Zitat antworten Zitat