verwendetes Datenbanksystem: <MySQL>
Hier wird es mir etwas zu Hoch, aber ich brauche eine solche Funktion.
Ich möchte aus einer Reihe an Daten (muss VARCHAR sein) den MAX Wert innerhalb einer Zeichenkette finden.
also:
Datumeins123bla
Datumzwei234etc
Datumzwei456usw
Quasi: select * from BlaTB where BlaSpalte like 'Datumzwei%'
Habe im Internet gefunden:
SELECT * FROM testtable WHERE substring(test,2)=(SELECT MAX(CAST(SUBSTRING(test,2) AS SIGNED)) FROM testtable); und versuche auf meine Bedürfnisse umzumünzen
Das ist mir SQL technisch (noch) etwas zu hoch und weiss nicht wie ich untere Anfrage mit LIKE kombinieren kann.
Danke im Vorraus
"Man muß die Dinge so einfach wie möglich machen. Aber nicht einfacher." Albert Einstein
Einfach per AND
kombinieren:
SELECT * FROM BlaTB WHERE BlaSpalte LIKE 'Datumzwei%' AND SUBSTRING(BlaSpalte,10,3)=(SELECT MAX(CAST(SUBSTRING(BlaSpalte,10,3) AS SIGNED)) FROM BlaTB);
Klappt aber nur, wenn immer genau 3 Ziffern dahinter stehen (10 ist die Position).
Edit: evtl. BlaSpalte LIKE 'Datumzwei%'
auch noch in den Subselect per AND
einbauen (je nachdem ob du den MAX-Wert über alle Daten haben willst oder nur bezogen auf deine LIKE
-Einschränkung).
Hi,
nunja - die korrekte Implementierung hängt vom genauen String ab - scheinbar suchst du im String jeweils das "123" "456" - wichtig wäre hier zu wissen, ob Substring überhaupt einsetzbar ist. (also ob der Teil vor dem interessanten Teil immer gleich lang ist, und ob der interessante Teil auch immer gleich lang ist)
Ist das so überhaupt einsetzbar für dich? Wie genau funktioniert die Aufteilung innerhalb dieser Spalte? Und zudem: Wer zum Teufel hat das verbrochen?
LG
Warum muss der Datumswert als VARCHAR gespeichert werden? Daten sollten immer in der eigenen Urform gespeichert werden - die Umwanldung zur Anzeige übernimmt später der Client.
Es handelt sich um folgendes Format: Jahr-Monat-LfdNr.-XX
Also nicht nur Datum sondern noch extra Zeichen
Fragliche Teile sind gleich lang. Datum(8 Zeichen), Lfdnr.(4 Zeichen), 2 extra Zeichen
Letzte Frage: Ich nicht 😄
"Man muß die Dinge so einfach wie möglich machen. Aber nicht einfacher." Albert Einstein
Es handelt sich um folgendes Format: Jahr-Monat-LfdNr.-XX
Also nicht nur Datum sondern noch extra Zeichen
Dann würde ich die Daten in 2 Spalten speichern. Daten immer in der Urform speichern - die spätere Verarbeitung wird es dir danken.
Beispiel:
Was machst du wenn der der 2. Teil auf einmal 4 oder 5 stellig wird? Schon hast du hier ein rießen Problem...
Letzte Frage: Ich nicht 😄
Dies ist eine Antwort, welche ich von keinem meiner Entwicklern gelten lassen würde. Wenn so etwas endeckt wird, wird versucht die Ursache zu beheben und nicht an den Symtomen herum zu spielen....
War ein Scherz - auch Entwickler brauchen Humor!
Dieser Wert soll so sein, d.h. Datum am Anfang dann 4 Ziffern (ist so konzipiert das es nicht mehr als 4 sind) und 2 Buchstaben, kann/soll nicht getrennt werden.
"Man muß die Dinge so einfach wie möglich machen. Aber nicht einfacher." Albert Einstein
Bitte keine Fullquotes. Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 2.3
(ist so konzipiert das es nicht mehr als 4 sind) und 2 Buchstaben, kann/soll nicht getrennt werden.
Nochmals - nur weil es aktuell so ist, sollte man überlegen ob man es nicht doch besser machen kann. Und ja - die Bedingungen mögen aktuell so sein, dies kann sich schnell ändern.
Ist es echt so schwer, hier einfach sauber zu arbeiten und die Daten in Ihrer Urform in 2 Spalten zu speichern? Damit wäre dein Problem sofort erledigt und deine Anwendung wäre auch für die Zukunft gerüstet... Und sollte eine Funktion die Daten in der aktuellen Form benötigen, kannst du diese im SQL Befehl ganz einfach zusammensetzen...
Aber egal - es ist deine Anwendung und deine Entwicklung, ich verabschiede mich aus dieser Diskussion, denn meine Bastelzeiten sind schon ein paar Jahre vorbei... Heute versuche ich sauber zu entwicklen und zu arbeiten und nehme gut gemeinte Ratschläge bzw. Hilfestellungen an!
Nochmals - nur weil es aktuell so ist, sollte man überlegen ob man es nicht doch besser machen kann. Und ja - die Bedingungen mögen aktuell so sein, dies kann sich schnell ändern.
Ist es echt so schwer, hier einfach sauber zu arbeiten und die Daten in Ihrer Urform in 2 Spalten zu speichern? Damit wäre dein Problem sofort erledigt und deine Anwendung wäre auch für die Zukunft gerüstet... Und sollte eine Funktion die Daten in der aktuellen Form benötigen, kannst du diese im SQL Befehl ganz einfach zusammensetzen...
Update: Habe meinen Chef gefragt und bei diesem Eintrag kann die laufende Nummer separat gespeichert werden. Ursprünglich sollte diese Kundennr. en bloc sein.
Danke
"Man muß die Dinge so einfach wie möglich machen. Aber nicht einfacher." Albert Einstein