Das ist, was ich für SQL Server entwickelt habe. Sie können dieselbe Logik in MySQL verwenden, obwohl ich keine TRY_CAST-Funktion in MySQL kenne.
Vielleicht jemand, der MySQL-Syntax besser als ich kann das bearbeiten? Die folgende Abfrage gibt 999.00
zurück.
DECLARE @String Varchar(1000) = 'kdsfjalkjdf389kljsafd3.02laksjfd6098;lksadjf0394a;lkjdf3.45.2klasjdf4.68;laksjf296kljsdf999skldjf689.78'
DECLARE @StringLen integer = LEN(@String)
DECLARE @Parser integer = 0
DECLARE @StringsTVP Table (
Strings varchar(6)
)
WHILE @Parser < @StringLen - 1
BEGIN
-- use max string length of 6, since the upper-limit is 999.99
INSERT INTO @StringsTVP (Strings) SELECT SUBSTRING(@String, @Parser, 1)
INSERT INTO @StringsTVP (Strings) SELECT SUBSTRING(@String, @Parser, 2)
INSERT INTO @StringsTVP (Strings) SELECT SUBSTRING(@String, @Parser, 3)
INSERT INTO @StringsTVP (Strings) SELECT SUBSTRING(@String, @Parser, 4)
INSERT INTO @StringsTVP (Strings) SELECT SUBSTRING(@String, @Parser, 5)
INSERT INTO @StringsTVP (Strings) SELECT SUBSTRING(@String, @Parser, 6)
SET @Parser = @Parser + 1
END;
SELECT MAX(TRY_CAST(Strings AS Decimal(5, 2))) AS MaxNumber
FROM @StringsTVP
Es ist möglich, eine skalare Funktion zu erstellen, die dies tut. Muss es auch mit Dezimalzahlen umgehen können, oder sind es nur ganzzahlige Werte? – Sturgus
Dezimalzahlen zu (xxx.xx) – user6331675
Gibt es auch eine erwartete Obergrenze für die Anzahl? z.B. 999,999,999 – Sturgus