Question

J'ai une question pour débutants dans T-SQL.

Nous avons importé des feuilles de calcul Excel dans un serveur SQL Server 2008. Dommage que ces fichiers Excel ne soient pas formatés comme ils le devraient. Nous voulons un numéro de téléphone qui ressemble à ceci: '012345678', sans espaces blancs de début et de fin, ni espaces à l'intérieur. Pire encore, le numéro est parfois codé avec le préfixe "0123-2349823" ou "0123/2349823".

Normalement, j'exporterais le fichier Excel dans un fichier CSV , puis lancerais des script magique Perl pour effectuer le nettoyage puis réimporter le fichier Excel.

Néanmoins, il serait intéressant de savoir comment faire ce genre de choses avec T-SQL.

Des idées?

Était-ce utile?

La solution

Quelque chose comme

replace(replace(rtrim(ltrim('0123-2349823')), '-', ''), '/', '')

devrait fonctionner. Ça n'a pas l'air joli. ;)

Autres conseils

Je voudrais y aller avec une mise à jour et utiliser les fonctions 'Replace' et LTrim / RTrim pour SQL.

Update Table1
set phonenum = Case
        When phonenum like '%-%' Then LTrim(RTrim(Replace(phonenum, '-', '')))
            Else LTrim(RTrim(Replace(phonenum, '/', '')))
        End

" nettoyé " contient uniquement une valeur numérique

Selon qu'un numéro de téléphone contient "-", "/", remplacez-les par une chaîne vide.

create table #t ( tel varchar(30) )

insert  #t select '0123-2349823' 
insert  #t select '0123/2349823'

select  tel,
        replace(tel, 
            case
                when patindex('%-%', tel) > 0 then '-'
                when patindex('%/%', tel) > 0 then '/'
            end, '') as Cleaned
from    #t
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top