Das System mit denen ich arbeite hat ein Nummerierungssystem, wo die Zahlen 0-999
durch die üblichen 0-999
vertreten sind, aber 1000
durch vertreten, gefolgt von A01
, A02
, A03
, etc, 1100
seinen B00
usw.Benutzerdefinierte Zahlenfolge Formatierung
Ich kann mir keinen Weg vorstellen, wie ich das in T-SQL handhaben kann, ohne einzelne Ziffern mit großen Fallanweisungen zu untersuchen, und es muss einen besseren Weg geben. Ich hatte über Hexadezimal gedacht, aber das ist nicht richtig.
DECLARE @startint int = 1,
@endint int = 9999;
;WITH numbers(num)
AS
(
SELECT @startint AS num
UNION ALL SELECT num+1 FROM numbers
WHERE num+1 <= @endint
)
SELECT num, convert(varbinary(8), num) FROM [numbers] N
OPTION(MAXRECURSION 0)
Mit diesem 999
ist jetzt 3E7
, wo es nur 999
sein sollte.
Diese produziert derzeit folgendermaßen aus:
Number Sequence
0 0x00000000
1 0x00000001
...
10 0x0000000A
...
100 0x00000064
...
999 0x000003E7
1000 0x000003E8
Was ich suche:
Number Sequence
0 000
1 001
...
10 010
11 011
12 012
...
999 999
1000 A00
1001 A01
...
1099 A99
1100 B00
1101 B01
1200 C00
Ich brauche das 2008
Können Sie bitte Ihre erwartete Ausgabe und aktuellen Daten – TheGameiswar
SQL Server zeigen bereits [Sequenzen] (https://msdn.microsoft.com/en-us/library/ff878058.aspx). Diese rekursive Version ist tatsächlich eine der langsamsten Möglichkeiten zum Generieren einer Nummerntabelle und nicht zum Generieren der nächsten Nummer in einer Sequenz. Schließlich ist Ihr Problem nicht einer der Rollover (Sie rollen überhaupt nicht), es ist eine Frage der Formatierung einer Zahl zu einer Zeichenfolge –
@ PanagiotisKanavos nicht besorgt darüber, wie schnell oder langsam es ist. Das System wurde geschrieben, als die Leute neu zu programmieren waren, also gibt es tatsächlich einen Tisch, in dem all das gespeichert wird ... * cringe * ... aber das bedeutet, dass ich es einfügen und mich nie wieder darum kümmern muss. – Logan