Manipulation eines Wertes

sentence87

Neuer Benutzer
Beiträge
1
Hallo zusammen,
bin so langsam echt am verzweifeln. Ich habe folgendes Problem. In einer Tabelle xxx habe ich eine Spalte ID die wie folgt aussieht: 1000000000000000002367809.
Jetzt möchte ich gern den Ausgegebenen Wert so manipulieren, dass die Ausgabe des Wertes ID folgendermaßen aussieht: 1_2367809@XXX_1_XX

Zur Erklärung: Die nullen ab zweiter Stelle sollen bis zu der nächsten Stelle die nicht 0 ist durch einen Unterstrich ersetzt werden. Die Anzahl der Aufeinanderfolgenden nullen kann unterschiedlich sein.Dabei ist Jedoch zu beachten dass die Führende 1 einen Wert zwischen 1-9 haben kann.Des Weiteren ist zu beachten, dass nullen die innerhalb des rot markierten Bereichs nicht wegfallen dürfen. Am Ende an den String soll dann noch ein @XXX_1_XX angefügt werden.

Ich hoffe ihr könnt mir bei meinem Problem weiterhelfen..
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.579
Da gibt es mehrere Wege, allerdings ist es mit replace etwas schwer. Ich versuchs mal:
Code:
DECLARE    @spalte VARCHAR(255) = '1000000000000000002367809@XXX_1_XX'
 
SELECT    left(@spalte,1) + '_' + right(@spalte,len(@spalte)-patindex('%[1-9]%',right(@spalte,len(@spalte)-1)))

Geht allerdings nur, wenn die Ziffer vorne einstellig bleibt.
 
Werbung:

PLSQL_SQL

SQL-Guru
Beiträge
176
Ist ein bisschen komplizierter aber geht:

1000000000000000002367809

(
substr(columname , 1 , instr(columname, '0'))
|| '_' ||
TRIM( replace ( substr( columname, instr(columname, '0') ), '0', '' ) )
|| '@XXX_1_XX'
) as yourname

1_2367809@XXX_1_XX


Probiers mal. ;-) Lg

 
Oben