PDA

View Full Version : [SQL] carattere di riempimento


mailand
03-06-2004, 09:09
ciao a tutti
ho questo problema: in un database oracle, ricevo delle stringhe di dati da alcune fonti, sono tutte stringhe di testo. il campo in cui arrivano le stringhe è un char (6), e dovrei ricevere in input per esempio '00000A', mentre mi arriva 'A ' (lettera e 5 spazi a seguire)
come potrei fare? la sola funzione trim (o rtrim) non è sufficiente perchè elimina gli spazi, e usando pad non riempie correttamente...
grazie per l'aiuto e ciao


ps: spero che almeno stavolta qualcuno che mi sappia rispondere ci sia... ;)

cionci
03-06-2004, 09:25
Fai trim e poi concatena con '00000'

kingv
03-06-2004, 09:26
lpad (trim('A '), 6)

non va bene?

kingv
03-06-2004, 09:28
Originariamente inviato da mailand

ps: spero che almeno stavolta qualcuno che mi sappia rispondere ci sia... ;)



di solito le tue domande sarebbero adatte a un forum di DBA oracle, non di sviluppatori.

mailand
03-06-2004, 09:29
Originariamente inviato da cionci
Fai trim e poi concatena con '00000'

no, la lunghezza della stringa è variabile...

Originariamente inviato da kingv

non va bene?

potrebbe, lo provo... ma dov'è che indichi il carattere di riempimento?

kingv
03-06-2004, 09:30
potrebbe, lo provo... ma dov'è che indichi il carattere di riempimento?




lpad (stringa, lungh, carattere_di_riempimento);




se non metti niente usa lo spazio :O

cionci
03-06-2004, 09:32
lungh lo puoi determinare da 6 - la lunghezza della stringa sopo che hai fatto il trim...

mailand
03-06-2004, 09:34
Originariamente inviato da kingv
di solito le tue domande sarebbero adatte a un forum di DBA oracle, non di sviluppatori.

lo so, ma di solito non riescono a rispondermi nemmeno lì, e a volte nemmeno nei metalink di oracle... ho aperto qualche tar ma giace senza risposta da un paio di mesi... :)


Originariamente inviato da kingv
se non metti niente usa lo spazio

perfetto, sbagliavo la sintassi...
avevo anche provato a farla eseguire direttamente in db2 con la funzione translate, ma (ovviamente) mi portava gli 0 in coda alla stringa...;)

grazie mille per l'aiuto! :)

mailand
03-06-2004, 09:36
Originariamente inviato da cionci
lungh lo puoi determinare da 6 - la lunghezza della stringa sopo che hai fatto il trim...

esatto... è che senza trim se fai una banale sostituzione mette i caratteri in fondo e a me servono in testa...

kingv
03-06-2004, 09:51
Originariamente inviato da mailand
in db2 con la funzione translate, ma (ovviamente) mi portava gli 0 in coda alla stringa...;)




in Db2? ma non era su oracle che ti serviva :wtf:

kingv
03-06-2004, 09:53
Originariamente inviato da kingv
in Db2? ma non era su oracle che ti serviva :wtf:



lascia perdere, mi ricordo ora che avevi chiesto del transparent gw...

mailand
03-06-2004, 11:14
esatto... ho la possibilità di eseguire la manipolazione dei dati da entrambe le fonti, posso scegliere se farle eseguire direttamente dal cursore su as400 oppure se manipolare i dati da oracle in locale al momento dell'insert into...
adesso sto testando quale sia il più performante... il fatto è che posso caricare i dati in maniera velocissima (e già ottimizzata) via sql loader, ma possono passarmeli una volta al giorno perchè i dati vengono manipolati per darci la stringa giusta, viene fatto un ftp di tutti i file che ci servono (circa 15gb di dati) e oltretutto mi passano anche dati che non mi servono... solo che se per caso mi servono dati in tempo reale, l'unica soluzione è usare il gateway, con questi problemi di conversione dati...
cmq con la stringa di istruzioni va perfettamente!;)

kingv
03-06-2004, 11:16
Originariamente inviato da mailand

cmq con la stringa di istruzioni va perfettamente!;)



meglio così :)


lavori in una banca?