Einzelnen Beitrag anzeigen

Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: Telefonnummer in Datenbank Finden

  Alt 4. Dez 2014, 18:56
In Firebird zumindest seit der 2.x ' er Version kann man die meisten UDF' s durch SP' s ersetzen.

Code:
create or alter procedure nur_ziffern (
    wert varchar(80)
returns (
    result varchar(80))
as
declare variable laenge smallint$;
declare variable pos smallint$;
declare variable zeichen char1$;
begin
  laenge = char_length(:wert);
  if (:laenge > 0) then
  begin
    pos = 1;
    while (:pos <= :laenge) do
    begin
      zeichen = substring(:wert 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
Ich führe immer ein Feld mit (Bsp. nummer$, welches nur die Ziffern enthält.
Dieses wird über einen Trigger aktuell gehalten:

Code:
CREATE OR ALTER TRIGGER TELEFON_BUI1 FOR TELEFON
ACTIVE BEFORE INSERT OR UPDATE POSITION 1
as
begin
  execute procedure nur_ziffern(new.nummer) returning_values new.nummer$;
end
Das Feld ist indexiert und wird für die Suche benutzt.

Frank
Frank Reim

Geändert von dataspider ( 4. Dez 2014 um 18:59 Uhr)
  Mit Zitat antworten Zitat