Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Falsche Zeichen in einem DB-Feld per SQL finden (https://www.delphipraxis.net/117348-falsche-zeichen-einem-db-feld-per-sql-finden.html)

nachtstreuner60 17. Jul 2008 13:42

Re: Falsche Zeichen in einem DB-Feld per SQL finden
 
Trotzdem vielen Dank für dein Bemühen Stephan,

nun versuch ich´s mal mit der Version von OMATA.

Hier weis ich allerdings noch nicht, wie ich den Code einbinde und vor allem wo

Delphi-Quellcode:
SET TERM ^ ;
CREATE OR ALTER PROCEDURE CLEARNUMERIC (
  INPUTSTR Varchar(100)
)
RETURNS (Result Varchar(100)) AS
BEGIN
  Result = '';
  WHILE (InputStr <> '') DO BEGIN
    IF ('0123456789' NOT LIKE '%' || SUBSTRING(InputStr FROM 1 FOR 1) || '%') THEN
    BEGIN
      Result = Result || SUBSTRING(InputStr FROM 1 FOR 1);
    END
    InputStr = SUBSTRING(InputStr FROM 2);
  END
  SUSPEND;
END^
SET TERM ; ^
hat jemand eine kleine Hilfestellung für mich ?

nahpets 17. Jul 2008 18:25

Re: Falsche Zeichen in einem DB-Feld per SQL finden
 
Hallo,

da hier bisher nichts gekommen ist, versuche ich es mal mit meinem "fundierten Halbwissen" ;-)

Wenn Du den Quelltext der Prozedur einer Query zuweist

Delphi-Quellcode:
zQuery1.sql.clear;
zQuery1.sql.add('SET TERM ^ ;');
zQuery1.sql.add('CREATE OR ALTER PROCEDURE CLEARNUMERIC (');
zQuery1.sql.add(' INPUTSTR Varchar(100)');
zQuery1.sql.add(')');
zQuery1.sql.add('RETURNS (Result Varchar(100)) AS');
zQuery1.sql.add('BEGIN');
zQuery1.sql.add(' Result = '''';');
zQuery1.sql.add(' WHILE (InputStr <> '''') DO BEGIN');
zQuery1.sql.add('   IF (''0123456789'' NOT LIKE ''%'' || SUBSTRING(InputStr FROM 1 FOR 1) || ''%'') THEN');
zQuery1.sql.add('   BEGIN');
zQuery1.sql.add('     Result = Result || SUBSTRING(InputStr FROM 1 FOR 1);');
zQuery1.sql.add('   END');
zQuery1.sql.add('   InputStr = SUBSTRING(InputStr FROM 2);');
zQuery1.sql.add(' END');
zQuery1.sql.add(' SUSPEND;');
zQuery1.sql.add('END^');
zQuery1.sql.add('SET TERM ; ^');
und anschließend die Query mit

Delphi-Quellcode:
zQuery1.ExecSQL;
ausführst, so hoffe ich, dass dann in der Datenbank die Prouedur angelegt wurde.
Anschließend sollte eine Abfrage unter Benutzung der Prozedur funktionieren.

SQL-Code:
SELECT *
FROM IDOC_REAL
WHERE (SELECT result FROM CLEARNUMERIC(ScanCode)) <> 'F'
So wie omata das oben bereits beschrieben hat.

Stephan


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:25 Uhr.
Seite 4 von 4   « Erste     234   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz