Hi
du könntest neben dem Feld SCANCODE ein zweites Feld z.B. "SCANCODE_CLEARED" in der Tabelle führen in der die bereinigten Scancodes stehen.
Dieses Feld "SCANCODE_CLEARED" wird immer durch einen Insert/Update-Trigger gesetzt.
SQL-Code:
CREATE OR ALTER TRIGGER SCANCODES_BI FOR SCANCODES
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
BEGIN
IF (NEW.ID IS NULL) THEN
NEW.ID = GEN_ID(GEN_SCANCODES_ID,1);
NEW.SCANCODE_CLEARED = 'F'||F_STRIPSTRINGHOLD( F_STRCOPY(NEW.SCANCODE, 1, 10), '0123456789');
END
F_STRIPSTRINGHOLD() und F_STRCOPY() sind Funktionen aus der FreeAdHocUDF.
Die musst du natürlich vorher einbinden.
Abfrage für fehlerhaften Sätze:
SQL-Code:
select
S.ID,
S.SCANCODE,
S.SCANCODE_CLEARED
from
SCANCODES S
where
S.SCANCODE <> S.SCANCODE_CLEARED
Abfrage für korrekte Sätze:
SQL-Code:
select
S.ID,
S.SCANCODE,
S.SCANCODE_CLEARED
from
SCANCODES S
where
S.SCANCODE = S.SCANCODE_CLEARED
Das geht natürlich auch ohne extra Feld nur mit einen Select-Statement.
Kommt darauf an wie oft du Werte benötigst.
SQL-Code:
select
S.ID,
S.SCANCODE,
'F'||F_STRIPSTRINGHOLD( F_STRCOPY(S.SCANCODE, 1, 10), '0123456789')
from SCANCODES S
where
S.SCANCODE <> 'F'||F_STRIPSTRINGHOLD( F_STRCOPY(S.SCANCODE, 1, 10), '0123456789')
alex