mercoledì 27 agosto 2008

Extract only numbers from a String in SQL Server

Circa una settimana fa, davanti ad un buon caffè, Guglielmo ovviamente :-), un mio carissimo amico mi chiese una Function in SQL Server che estraesse da una stringa solo numeri.
Lavorando da molti anni in Oracle ho subito pensato alle functions Translate or regexp_replace (10g).
Ma poi mi sono ricordato che in SQL Server, la funzione Translate non esiste e l’utilizzo delle “Regular Expression” è possibile sono by CLR .

Allora documentandomi un po’ in giro ecco una soluzione carina, spero!?! :-)

declare @in_string varchar(255)
declare @out_string varchar(255)

set @in_string='Carlopoli21082008Claudio&Rino&pureSergio'
set @out_string = ''


select @out_string = @out_string + a.sub_char
from
(

select substring(@in_string, b.number,1) as sub_char
from master..spt_values b
where b.type = 'p'
and b.number between 1 and len(@in_string)
) as a
where isnumeric(a.sub_char) = 1


print @out_string

Ciao.
PS: Ringrazio il "vecchio", ma sempre saggio, Arcuri ... :-)

0 commenti: