(Administrator)
Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.894 Beiträge
Delphi 12 Athens
|
AW: Chr Feld numerisch sortieren
13. Aug 2015, 10:12
Davon ausgehend, dass Buchstaben immer nur ein Buchstabe hinten angehängt sein kann, kann man diesen beim ermitteln des "Dezimalanteils" ausschneiden und an das Result wieder ankleben. Dann wäre das in der Sortierung sauber mit drin.
Code:
SET TERM ^ ;
create or alter procedure sp_sortstring (
wert varchar(20))
returns (
result varchar(30))
as
declare variable laenge smallint;
declare variable pos smallint;
declare variable zeichen char(1);
declare variable temp varchar(20);
declare variable s1 varchar(10);
declare variable s2 varchar(10);
begin
s2='';
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
s2 = :zeichen;
break;
pos = :pos + 1;
end
end
if (coalesce(:temp, '') <> '') then
begin
-- Zahl vor Punkt auffüllen
pos = position('.', :temp);
if (:pos = 0) then
result = lpad(:temp, 10, '0');
else
result = lpad(substring(:temp from 1 for :pos -1), 10, '0')||'.'||lpad(substring(:temp from :pos + 1 for :laenge), 10, '0');
end
result = :result || :s2;
suspend;
end^
SET TERM ; ^
Das ist jetzt nur mal auf die Schnelle eingeflickt, ungetestet.
Thomas Breitkreuz
|
|
Zitat
|