ho una serie di stringhe tutte del tipo "xyz123-ab3c" alle quale devo
eliminare soltanto i caratteri alfabetici lasciando solo i trattini ed
i numeri (123-3). Ho provato con la funzione Replace ma, non essendo
esperto, non sono riuscito a fare molto. Avete qualche suggerimento?
Ciao e grazie.
Ciao Renato,
se le stringhe sono tutte nel formato "aaannn-aana" (a = alfabetico, n =
numerico) allora puoi risolvere velocemente il problema mediante la funzione
STUFF:
DECLARE @s char(11);
SET @s = 'xyz123-ab3c';
SELECT STUFF(STUFF(STUFF(@s, 1, 3, ''), 5, 2, ''), 6, 1, '') AS Stringa;
/* Output:
Stringa
--------
123-3
(1 row(s) affected)
*/
> Ciao e grazie.
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo
http://italy.mvps.org
declare @vch varchar(100)
set @vch= 'xyz123-ab3c'
print @vch
declare @intI int, @intL int
select @intL= len(@vch), @intI= 1
while @intI <= @intL
begin
if substring (@vch, @intI, 1) like '[^0-9-]'
select @vch= stuff (@vch, @intI, 1, ''), @intL= @intL - 1
else
set @intI= @intI + 1
end
print @vch
Se vuoi puoi mettere il codice che fa la pulizia in una funzione utente
scalare in modo da poterla usare cosě:
declare @vch varchar(100)
set @vch= 'xyz123-ab3c'
print @vch
set @vch= dbo.ufnCleanStr(@vch)
print @vch
Guarda qui per la sintassi da usare per la creazione di una funzione utente:
[CREATE FUNCTION]
http://msdn2.microsoft.com/it-it/library/ms186755.aspx
--
Ciao, Alessandro
/*
Alessandro Dereani
Microsoft MVP - SQL Server
http://mvp.support.microsoft.com
*/
Ciao e grazie.
> Grazie soprattutto perchč il Gruppo č la mia unica fonte formativa,
> visto che dove lavoro io i corsi di SQL li ho visti solo dal binocolo.
>
Male, ci sono anche i Books On Line, ok, a volte non sono proprio chairi
chiari, ma comunque danno sicuramente degli ottimi spunti. Poi capito quelli
si puň anche approfondire sempre basandosi sui BOL, oppure su altri testi
che in ogni caso esistono.
E per via dei corsi, non ti preoccupare, sei in molto buona compagnia...