Transact -SQL de Microsoft SQL a la capacité de prendre des caractères alphabétiques , mais laisser caractères numériques dans une chaîne , il faut juste la création d'une fonction définie par l'utilisateur . Vous voudrez peut-être de le faire dans les cas où il ya un champ numérique dans la base de données et que vous souhaitez protéger l'intégrité de votre instruction d'insertion par le nettoyage des données avant de tenter de l'insert. Dans la plupart des cas, la totalité de l'instruction d'insertion échouera si il ya un caractère alphabétique dans un champ numérique . Instructions 1 Microsoft SQL, créer une fonction définie par l'utilisateur comme : CREATE dbo.UDF_NumericOnlyChars de Fonction: (produits @ string VARCHAR (8000) ) RETURNS VARCHAR ( 8000) AS BEGIN DECLARE @ IncorrectCharLoc SMALLINT SET @ IncorrectCharLoc = PATINDEX ( '% [ ^ 0-9 ]% ', @ string) alors que @ IncorrectCharLoc > 0 BEGIN SET @ NumericString = STUFF (@ NumericString , @ IncorrectCharLoc , 1, '') SET @ IncorrectCharLoc = PATINDEX ( '% [ ^ 0-9 ]% ', @ NumericString ) End of < p> Si (@ NumericString ='' ) SET @ NumericString = '0 ' - Cela garantira que une chaîne de nombres est retourné RETURN @ NumericString End of GO Ceci est basé outre de la fonction définie par l'utilisateur créée par Pinal Dave 2 Utilisez la fonction comme ceci: . < p . > Sélectionnez [ dbo ] UDF_NumericOnlyChars ( ' sadDs132 # dds @ 19') qui sera de retour : 13219 3 Utilisez la fonction de une colonne de table pour retourner uniquement les caractères numériques de la chaîne : Sélectionnez Prénom, Nom , Téléphone , UDF_NumericOnlyChars (Téléphone) comme « NumberOnly ' de tblPeople qui sera de retour : < p> Prénom NOM Téléphone NumberOnly -------------------------------------- ----------------------------- John Doe (888) 555-1212 8885 551212
|