2009-11-23 11 views
0

J'écris une fonction en SQL que nous pouvons utiliser pour valider les noms First/Middle/Last que nous avons dans une table donnée. En ce moment, je travaille sur une liste de codes ASCII pour les caractères que je vais considérer invalide et se désengager de l'entrée. Mon plan est de créer une table qui contient les codes de caractères de ces caractères que je considère comme invalides, et d'écrire un curseur qui remplacera chaque caractère invalide de l'enregistrement d'entrée en cours sur lequel il travaille. Est-ce que je devrais simplement me frayer un chemin à travers toute la table ascii ou est-ce que quelqu'un a déjà vu un effort similaire comme celui-ci que je peux regarder pour construire? L'utilisation de code dans SQL pour analyser les données de caractères non valides est une approche très lente et peu susceptible de vous rendre heureux.SQL pour normaliser/nettoyer les champs Prénom/Milieu/Nom

Répondre

1

C'est à peu près ce que nous faisons

declare @currentCharacter char(1) 
declare @alphanumericString VARCHAR(250) 
declare @inputStringLength int 
declare @positionIndex int 

    --init variables 
    select @positionIndex = 1 
    select @alphanumericString = '' 

    --get the string length 
    select @inputStringLength = LEN(@inputString) 

    --loop through the set 
    while @positionIndex <= @inputStringLength 
    begin 
     --get each character 
     select @currentCharacter = substring(@inputString,@positionIndex,1) 

     --make sure its between 0-9, A-Z, or a-z 
     if (ascii(@currentCharacter) > 31 and ascii(@currentCharacter) < 126) 

      set @alphanumericString = @alphanumericString + @currentCharacter 

     --increament counter 
     set @positionIndex = @positionIndex + 1 
    end 

    return @alphanumericString 
end 

Bien sûr, vous voulez faire l'entrée de données ne sont pas à la table tout comme cela prendra pour toujours.

2

La plupart des gens feraient, je pense, cette validation en dehors de la DB. Si vous devez le faire à l'intérieur de la base de données, cherchez à écrire un déclencheur qui utilise le langage inhérent à la base de données (Oracle PL/SQL, MSSQL tsql) pour vérifier la chaîne, en codant la liste de caractères valide dans le script.

Et que se passe-t-il lorsqu'une personne portant un nom avec des accents ou d'autres caractères intéressants apparaît?

Questions connexes