![]() |
Datenbank: Firebird • Version: 1.5 • Zugriff über: BDE
[SQL] where-Clause auf Stringfeld, in dem nur Zahlen stehen
Hallo,
ich bräuchte mal bitte einen kleinen Tip. Ich hab eine Artikeldatenbank, in der das Feld Artikelnummer ein String-Feld ist. Jetzt möchte ich alle Artikel haben, bei denen die Artikelnummer nur aus Zahlen besteht. Es gibt also Artikel, die haben in der Artikelnummer Buchstaben, Leer- und Sonderzeichen. Und das in jeder erdenklichen Konstelation. All diese Artikel möchte ich löschen. Ich komm aber einfach nicht weiter, das in einer einzigen SQL-Abfrage unterzubringen. Der erste Gedanke war ein Cast auf die Artikelnummer in Integer, aber da das ganze in ein Script soll, kann ich da leider nicht auf Fehler reagieren, wenn einer auftritt, stopt das Script. Habt Ihr nen Tip, wie man sowas bewerkstelligen könnte? Grüsse vom el Toppo |
Re: [SQL] where-Clause auf Stringfeld, in dem nur Zahlen ste
Das Problem wird sich nur mit einer SP lösen lassen.
|
Re: [SQL] where-Clause auf Stringfeld, in dem nur Zahlen ste
Du kannst auch mehrere DELETE Anweisungen nacheinander absetzen.
SQL-Code:
Wenn deine Artikelnummer z.B. immer 10-stellig ist:
DELETE FROM Artikel WHERE IdArtikel <> Trim(IdArtikel)
SQL-Code:
So werden die ungeliebten Daten Schritt für Schritt entsorgt.
DELETe FROM Artikel WHERE IdArtikel > '9999999999' OR IdArtikel < '0000000000'
Vielleicht solltest du aber ein neues Feld "delFlag" einführen. Dann kannst du zuerst mit UPDATE das Feld setzen, bevor du durch ein falsches DELETE Kommando deine Daten riskierst:
SQL-Code:
und dann später werden alle Löschkandidaten gelöscht:
UPDATE Artikel SET delFlag=1 WHERE IdArtikel <> Trim(IdArtikel)
SQL-Code:
DELETE FROM Artikel WHERE delFlag <> 0
|
Re: [SQL] where-Clause auf Stringfeld, in dem nur Zahlen ste
SQL-Code:
sollte doch funktionieren. Soweit ich weiss, ignoriert der LIKE-Operator die Gross/Kleinschreibung. Wenn nicht, müssen eben noch 26 LIKE-Klauseln mit den Kleinbuchstaben herhalten...
select * from Artikel
where not ( ArtikelNr like '%A%' or ArtikelNr like '%B%' or ArtikelNr like '%C%' ... or ArtikelNr like '%Z%' ) |
Re: [SQL] where-Clause auf Stringfeld, in dem nur Zahlen ste
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Als ich das so in meinem Script machen wollte, bin ich dann aber an den Sonderzeichen gescheitert, weil alle möglichen Sonderzeichen in der Artikelnummer vorkommen können. Das mit Groß und Klein ist kein Problem die Artikelnummer ist Uppercase. Danke schonmal Grüsse vom el Toppo |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:58 Uhr. |
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