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
0
A
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?