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
< p > 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