Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Eliminare caratteri da una stringa

977 views
Skip to first unread message

Ren@to

unread,
Feb 5, 2008, 5:55:36 AM2/5/08
to
Ciao a tutti,

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.

Lorenzo Benaglia

unread,
Feb 5, 2008, 6:05:23 AM2/5/08
to
Ren@to wrote:
> 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).

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


AlessandroD

unread,
Feb 5, 2008, 6:13:13 AM2/5/08
to
"Ren@to" ha scritto nel messaggio
news:e39ab148-c40b-4a77...@i7g2000prf.googlegroups.com...
Un modo č questo:

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
*/


Ren@to

unread,
Feb 5, 2008, 7:16:15 AM2/5/08
to
Grazie ad entrambi, con i vs. suggerimenti ho risolto il problema.
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.

Ciao e grazie.

AlessandroD

unread,
Feb 5, 2008, 7:50:02 AM2/5/08
to

"Ren@to" <q.re...@gmail.com> ha scritto nel messaggio
news:21c51327-e090-40e5...@e23g2000prf.googlegroups.com...

> 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...

0 new messages