So finden Sie MAX () - Wert der Zeichen-Spalte?
Wir haben die legacy-Tabelle, wo eine Spalte in der ein Teil des zusammengesetzten Schlüssels wurde manuell mit Werten gefüllt:
code
------
'001'
'002'
'099'
etc.
Nun, wir haben feature-Anfrage, in der wir wissen müssen, MAX(code), um den Anwendern den nächsten möglichen Wert, im Beispiel Formular nächste Wert '100'.
Wir haben versucht, mit diesem experiment, aber wir können immer noch keine vernünftige Erklärung, wie DB2-engine berechnet, dass
MAX('001', '099', '576') ist '576'
MAX('099', '99', 'www') ist '99' und so weiter.
Jede Hilfe oder Anregungen wäre sehr geschätzt werden!
InformationsquelleAutor zarko.susnjar | 2011-07-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie bereits die Antwort auf das abrufen der maximalen numerischen Wert, sondern zu beantworten, den anderen Teil mit Bezug auf "www','099','99'.
AS/400 verwendet EBCDIC Werte speichern, dies unterscheidet sich von ASCII in mehrere Möglichkeiten, die am wichtigsten für Ihre Zwecke ist, dass Alpha-Zeichen vor den zahlen, die das Gegenteil von Ascii.
Also auf die Max() deine 3 strings sortiert werden und die höchste EBCDIC-Wert verwendet, so
Wie Sie sehen können, Ihre '99' string '99', so ist es höher, dass das mit der führenden null.
InformationsquelleAutor Jane T
Casten zu int vor der Anwendung von max()
InformationsquelleAutor Bohemian
Für die numerische maximum -- herauszufiltern, die nicht-numerischen Werte und Stimmen, um eine für numerische aggregation:
SQL-Referenz: ÜBERSETZEN
Und die vernünftige Erklärung:
SQL-Referenz: MAX
InformationsquelleAutor jamesallman
Diese max arbeitet auch in Ihrer Art definition, wenn Sie möchten, dass max auf integer-Werte, dann wandeln die Werte von integer vor dem Aufruf von MAX, aber ich sehe, Sie mischen max mit string 'www', wie Sie sich vorstellen, das funktioniert?
Filter integer nur Werte, wandeln Sie Sie in int und max rufen. Das ist nicht gut entworfene Lösung aber ein Blick auf Ihr problem denke ich ist genug.
InformationsquelleAutor Svisstack