DB2-Version ist 9.7.0.7Validate Daten vor der Konvertierung, aka. ISDATE() entspricht
Ich habe eine Flat-Datei und muss vor dem Einfügen in eine Produktionstabelle vollständig validieren. Zur Analyse habe ich es in eine Tabelle geparst, in der alle Spalten VARCHAR
sind.
Eine der Aufgaben besteht darin, Daten zu validieren. Ich muss in der Lage sein, die spezifischen ungültigen Daten zu finden, um über den Umfang (Häufigkeit) und die Lösung (Grund) zu berichten.
Ich verwende ISDATE()
in Sybase und SQL Server, die eine 1 für ein gültiges Datum und eine 0 für ein ungültiges Datum zurückgibt. In Teradata verließ ich mich auf die Tabelle SYS_CALENDAR
im Systemkatalog. Es ist ungefähr 15 Jahre her, seit ich das letzte Mal in einer DB2-Umgebung war, aber ich glaube, Analoga gibt es entweder nicht. In dieser DB2-Umgebung ist meine Rolle auf QA beschränkt, was bedeutet, dass ich keine T-SQL-Prozeduren oder UDFs erstellen kann.
Dieser Thread ist klug und lässt mich denken, dass eine gemeinsame Logik Tabellenausdruck sein können, die in einer Abfrage verwendet werden könnten: ISDATE equivalent of DB2
Dass man fällt kurz als Lösung, aber, weil es Format nur betrachtet - Das Vorhandensein eines ungültigen (aber korrekt formatierten) Datums wie "2016-04-31" oder "2016-02-30" führt zu einem Fehler und die Abfrage gibt keine Zeilen zurück.
Ich muss alle Zeilen zurückgeben, identifizieren, ob jeder gültig oder ungültig ist t arbeiten.
Gibt es eine Analog-ISDATE()
, SYS_CALENDAR
oder eine andere Lösung, die auf das gleiche Endprodukt einer zeilenweise Darstellung der Daten bekommt, das nicht zu DATE
gegossen werden kann, vor, dass die Umwandlung der Durchführung/einfügen?
Wenn Sie eine Möglichkeit, dies zu tun in einer gespeicherten Prozedur bestimmen könnte, dann würde die Sache sei ein "Werkzeug für den Job" -Problem, das du mit denen, die dich bezahlen, aufnehmen könntest. –
Sie können eine zusammengesetzte SQL-Anweisung (manchmal als anonymer Block bezeichnet) ausführen, ohne eine Routine zu erstellen. Also, ja, es gibt eine Lösung. – mustaccio