Da du auch Buchstaben im Wert hast, dürfte es mit
SQL "schwer" sein.
Du willst ja nach dem Zahlenanteil sortieren, und den musst du dann erst mal extrahieren.
Ich würde eine SP schreiben, die dir den Dezimalwert zurück liefert.
Dann kann man mit
order by (select result from SP_STRING_AS_DECIMAL(WERT))
sortieren.
So eine SP ist ja easy in wenigen Minuten geschrieben...
SP könnte so aussehen:
Code:
SET TERM ^ ;
create or alter procedure sp_string_as_decimal (
wert varchar(20))
returns (
result numeric(15,2))
as
declare variable laenge smallint;
declare variable pos smallint;
declare variable zeichen char(1);
declare variable temp varchar(20);
begin
result = null;
laenge = char_length(:wert);
if (:laenge > 0) then
begin
pos = 1;
while (:pos <= :laenge) do
begin
zeichen = substring(:wert from :pos for 1);
if (:zeichen in ('0','1','2','3','4','5','6','7','8','9', '.')) then
temp = coalesce(:temp, '')||:zeichen;
else
break;
pos = :pos + 1;
end
end
if (coalesce(:temp, '') <> '') then
result = cast(:temp as numeric(15, 2));
suspend;
end^
SET TERM ; ^
Frank