Forum: SQL |
Thema:
AW: AW: AW: AW: AW: AW: Sortierung falsch angezeigt |
Von:
Thomas Golla (
11.08.2006 09:14) |
Hi,
keine Ahnung ob das schneller geht oder dir diese Art der Lösung überhaupt gefällt :-)
create function testo(@_wert nvarchar(500), @_laenge integer) Returns nvarchar(500) as
begin
declare @temp nvarchar(100)
declare @RWert as nvarchar(500)
declare @punktStelle as integer
set @punktstelle = charindex('.', @_wert)
if @punktstelle > 0
begin
while @punktstelle > 0
begin
set @punktstelle = charindex('.', @_wert)
if @punktstelle > 0
begin
set @temp = substring(@_wert,0, @punktstelle)
set @_wert = substring(@_wert, @punktstelle+1, len(@_wert)-len(@temp)-1)
while len(@temp) < @_laenge
begin
set @temp = cast('0' as nvarchar(1)) + cast(@temp as nvarchar(100))
end
set @RWert = cast(@RWert as nvarchar(500)) + cast(@temp as nvarchar(100))
end
else
begin
while len(@_wert) < @_laenge
begin
set @_wert = cast('0' as nvarchar(1)) + cast(@_wert as nvarchar(100))
end
set @RWert = cast(@RWert as nvarchar(500)) + cast(@_wert as nvarchar(100))
end
end
end
else
begin
set @RWert = @_wert
while len(@RWert) < @_laenge
begin
set @RWert = cast('0' as nvarchar(1)) + cast(@RWert as nvarchar(500))
end
end
return @RWert
end
Wichtig beim Aufruf:
SET CONCAT_NULL_YIELDS_NULL OFF
select dbo.testo(wert, 5), wert from tab1 order by 1
SET CONCAT_NULL_YIELDS_NULL ON
LG
Tom
P.S.: Ja, mir war gestern Abend langweilig *lach*
Betreff |
Von |
Datum |
|
|
Martin
Mostögl
|
11.08.2006 10:35 |
|
|
Martin
Mostögl
|
11.08.2006 11:55 |
|
|
AW: AW: AW: AW: AW: AW: AW: AW: Sortierung falsch...
Hi, falls du meine Idee meintest :-)<br><br>ich wandele einfach die Zahlen in einen nvarchar mit fester Länge um und diese werden dann sortiert.<br>Die fehlenden Stellen der variablen werden von links mit 0... |
|
|
|
|
|
Thomas
Golla
|
11.08.2006 12:19 |
|
|
Martin
Mostögl
|
11.08.2006 13:25 |
|
|
Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!