Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   SQL Ziffer in Buchstabe umwandeln (https://www.delphipraxis.net/177426-sql-ziffer-buchstabe-umwandeln.html)

Jumpy 6. Nov 2013 09:12

Datenbank: Oralcle • Version: 11g • Zugriff über: ODBC->ADO

SQL Ziffer in Buchstabe umwandeln
 
Hallo,

ich muss in einem aus Ziffern bestehenden String, die erste Ziffer in den entsprechenden Buchstaben des Alphabets umwandeln. Nachdem ich da erst mit lauter geschachtelten decodes und cases rumgeeiert habe, hab ich nun eine nette Variante gefunden:

Code:
TRANSLATE(SUBSTR('0200',1,1),'0123456789','ABCDEFGHIJ')||SUBSTR('0200',2)
Macht z.B. aus '0200' -> 'A200'

Eigentlich bin ich damit ganz zufrieden (vor allem im Vergleich zu meinen ersten Versuchen dazu) aber ich wollte trotzdem nachfragen, ob es ggf. noch einfacher geht, vllt. mit einer Oracle-Funktion, die ich nicht kenne, oder so.
Das muss aber im SQL-Statement passieren, d.h. ich kann keine Stored Procedure dafür schreiben, und das Ganze nachher in Delphi in der Ergebnismenge zu machen, scheint mir eh am unelegantesten.

p80286 6. Nov 2013 11:23

AW: SQL Ziffer in Buchstabe umwandeln
 
Mir gefällt Deine Lösung, obwohl ich decode bevorzuge
aber
Code:
decode(substr(xx,1,1),'0','A','1','B'...,'notausgang')||substr(xx,2255)
ist auch nicht viel schöner, hat allerdings den Vorteil wenn die erste Stelle mal keine Ziffer ist, daß der Notausgang besteht.

Gruß
K-H

Jumpy 6. Nov 2013 13:26

AW: SQL Ziffer in Buchstabe umwandeln
 
Ich kann davon ausgehen, dass da nur Ziffern drin stehen (berühmte letzte Worte, ich weiß) drum funktioniert auch das Folgende dank automatischem Casten:

Code:
CHR(SUBSTR('0200',1,1)+65)||SUBSTR('0200',2)
Ist sogar noch weniger zu schreiben :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz