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?
Questions connexes
- 1. mssql_query() champs vides pour les champs datetime
- 2. SQL Server 2000 - Valeur par défaut pour les champs varchar
- 3. Déclaration SQL Ajouter à tous les champs
- 4. mysql_fetch_array pour les champs booléens?
- 5. Requête T-SQL pour récapituler les champs numériques dans un SQL Server 2000 db
- 6. sql pour détecter les champs modifiés dans le déclencheur de mise à jour (SQL Server 2005)?
- 7. CakePHP Model utilise les mauvais champs dans les instructions SQL!
- 8. Les jointures SQL sur les champs varchar expirent
- 9. SQL Case avec plusieurs champs
- 10. Champs SQL Server et DateTime
- 11. instruction SQL pour retourner tous les champs de toutes les tables
- 12. Vitesse SQL champs facultatifs SSRS
- 13. TSQL - réorganiser les champs
- 14. SQL INSERT performance omettant les noms de champs?
- 15. SQL SI ALORS pour la concaténation de champs
- 16. Récupère les noms des champs renvoyés par une instruction SQL
- 17. SQL. Requête pour l'agrégation de certains champs dépendants
- 18. Requête SQL pour additionner des champs de différentes tables
- 19. alignement vertical pour les champs de texte
- 20. requête pour résumer les champs en double
- 21. Affichage Gridview pour les champs de recherche
- 22. Tabindex pour les champs créés dynamiquement
- 23. Équivalent ISNULL pour les champs vides
- 24. Comment faire pour indiquer les champs obligatoires?
- 25. C# équivalent de typeof pour les champs
- 26. problème pour obtenir les noms de champs
- 27. sql recherche sur les champs contenant des signes diacritiques
- 28. comment rechercher de tous les champs dans sql
- 29. Très simple requête SQL sur les champs varchar avec sqlite
- 30. SQL distinct pour 2 champs dans une base de données