BuonAngolo
2005-01-25 14:50:22 UTC
Ambiente: SQL2kSP3 su W2kSrvSP4.
In alcuni linguaggi di programmazione, esiste la funzione VAL, che
restituisce il valore numerico interprentando una stringa, e arrestando tale
valutazione al primo carattere non valido.
Cioè, VAL("123ABC") restituisce il valore numerico 123.
In T-SQL, la conversione di "123ABC" con un cast, restituisce errore (e mi
sembra più che logico).
Il mio problema è che ho dei codici articolo che ricevo da applicativi
diversi, e che mi vengono scritti in una tabella in un campo di tipo Char,
ma che in realtà sono sempre dei numeri seguiti da delle lettere.
Ad esempio, ho "123456LH" o "6575875ABC".
Le lettere a fine stringa sono 'anomalie', cioè devo di fatto non
considerarle.
Per questo, mi occorre nei join fare riferimento solo alla parte numerica
intesa come valore, cioè "000123ABC" deve soddisfare il join con un campo
numeric che vale 123.
Ho tentato questo
update tb_info_aggiuntive
set codice_numerico=cast(codice as numeric(18,0))
per poter poi usare [Codice_Numerico] come criterio di join, ma ovviamente
si arresta con errore.
Esiste la possibilità, in T-Sql, di ottenere il valore numerico della parte
numerica di un campo char, 'trascurando' le lettere finali?
Grazie
Alberto
In alcuni linguaggi di programmazione, esiste la funzione VAL, che
restituisce il valore numerico interprentando una stringa, e arrestando tale
valutazione al primo carattere non valido.
Cioè, VAL("123ABC") restituisce il valore numerico 123.
In T-SQL, la conversione di "123ABC" con un cast, restituisce errore (e mi
sembra più che logico).
Il mio problema è che ho dei codici articolo che ricevo da applicativi
diversi, e che mi vengono scritti in una tabella in un campo di tipo Char,
ma che in realtà sono sempre dei numeri seguiti da delle lettere.
Ad esempio, ho "123456LH" o "6575875ABC".
Le lettere a fine stringa sono 'anomalie', cioè devo di fatto non
considerarle.
Per questo, mi occorre nei join fare riferimento solo alla parte numerica
intesa come valore, cioè "000123ABC" deve soddisfare il join con un campo
numeric che vale 123.
Ho tentato questo
update tb_info_aggiuntive
set codice_numerico=cast(codice as numeric(18,0))
per poter poi usare [Codice_Numerico] come criterio di join, ma ovviamente
si arresta con errore.
Esiste la possibilità, in T-Sql, di ottenere il valore numerico della parte
numerica di un campo char, 'trascurando' le lettere finali?
Grazie
Alberto
--
E non so se avrò gli amici a farmi il coro,
o se avrò soltanto volti sconosciuti,
canterò le mia canzoni a tutti loro
e alla fine della strada
potrò dire che i miei giorni li ho vissuti
E non so se avrò gli amici a farmi il coro,
o se avrò soltanto volti sconosciuti,
canterò le mia canzoni a tutti loro
e alla fine della strada
potrò dire che i miei giorni li ho vissuti