Laden...

MAX Wert suchen in einer VARCHAR Spalte mit SUBSTRING

Erstellt von echdeneth vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.932 Views
echdeneth Themenstarter:in
161 Beiträge seit 2019
vor 4 Jahren
MAX Wert suchen in einer VARCHAR Spalte mit SUBSTRING

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

4.931 Beiträge seit 2008
vor 4 Jahren

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).

1.029 Beiträge seit 2010
vor 4 Jahren

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

463 Beiträge seit 2009
vor 4 Jahren

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.

echdeneth Themenstarter:in
161 Beiträge seit 2019
vor 4 Jahren

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

463 Beiträge seit 2009
vor 4 Jahren

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....

echdeneth Themenstarter:in
161 Beiträge seit 2019
vor 4 Jahren

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

Hinweis von gfoidl vor 4 Jahren

Bitte keine Fullquotes. Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 2.3

463 Beiträge seit 2009
vor 4 Jahren

(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!

echdeneth Themenstarter:in
161 Beiträge seit 2019
vor 4 Jahren

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