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!