![]() |
Datenbank: Firebird • Version: 2.5 • Zugriff über: IBDAC
VarChar-Feld numerisch sortieren
Per Default-Verhalten werden Zahlen in VarChar-Feldern wie folgt sortiert:
Code:
Ich möchte nun aber eine Sortierung in numerischer Reihenefolge:
1
10 100 2 20
Code:
In der Firebird-Hilfe steht, dass man sich eine "collation" mit dieser Sortierung wie folgt anlegen kann:
1
2 10 20 100
SQL-Code:
Das wird ohne Problem ausgeführt.
create collation UNICODE_NUM for utf8
from UNICODE_CI_AI 'NUMERIC-SORT=1'; Wenn ich diese collation nun aber einem neuen Feld nutzen möchte, erscheint der folgende Fehler:
SQL-Code:
Fehler:
ALTER TABLE MyTable
ADD MyCol VARCHAR(10) CHARACTER SET UNICODE_NUM
Code:
Was mache ich falsch? Vielen Dank im Voraus!
Undefined name.
Dynamic SQL Error. SQL error code = -204. Data type unknown. CHARACTER SET UNICODE_NUM is not defined. PS: In meinem Feld stehen sowohl Texte als auch Zahlen und beides auch gemischt (z.B. 100HX12). Deswegen kann ich kein Integer-Feld nehmen. |
AW: VarChar-Feld numerisch sortieren
Du hast eine "collation" erzeugt, für den "CHARACTER SET" utf8.
ALTER TABLE MyTable ADD MyCol VARCHAR(10) CHARACTER SET utf8 COLLATE UNICODE_NUM Beim Sortieren kann die "collation" auch angegeben werden. select * from TABELLE order by FELDNAME collate UNICODE_NUM |
AW: VarChar-Feld numerisch sortieren
Danke!
Nun hab ich aber noch ein Problem. Ich benötige das auch für ein ASCII-Feld: Das Feld ist so definiert:
SQL-Code:
Ich möchte das dann so nutzen:
CREATE TABLE MyTable (
MyCol VARCHAR(10) CHARACTER SET ASCII, ... )
SQL-Code:
select * from MyTable order by ASCII_NUM
ASCII_NUM versuche ich so anzulegen:
SQL-Code:
Ergibt den Fehler:
create collation ASCII_NUM for ASCII
from ASCII 'NUMERIC-SORT=1';
Code:
Im IBExpert wird angezeigt, dass die collation auch ASCII heißt, die zum Character-Set ASCII gehört. Stimmt das nicht?!
This operation is not defined for system tables. unsuccessful metadata update. Invalid collation attributes.
|
AW: VarChar-Feld numerisch sortieren
wenn es ohne collations sein darf dann ist CAST dein Freund
select * from myable order by cast(mycol as integer) |
AW: VarChar-Feld numerisch sortieren
Zitat:
Zitat:
|
AW: VarChar-Feld numerisch sortieren
Muss es au DB-Seite sortiert werden?
Wir holen uns die unsortierte Ergebnisliste und sortieren dann auf Client-Seite mit einem eigens entwickelten "Natürliche Sortierung"-Algorithmus. |
AW: VarChar-Feld numerisch sortieren
Du kannst auch nach links mit 0 auffüllen + dann sortieren:
'00001' '00002' '00010' etc |
AW: VarChar-Feld numerisch sortieren
Zitat:
|
AW: VarChar-Feld numerisch sortieren
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz