Comment faire si une chaîne est un nombre en T-SQL
Est-il un moyen facile à obtenir si la chaîne est un nombre entier (se compose uniquement de chiffres) dans MS SQL 2005?
Merci pour votre aide.
OriginalL'auteur StuffHappens | 2010-01-21
Vous devez vous connecter pour publier un commentaire.
La fonction ISNUMERIC retourne si une chaîne est numérique, mais sera de retour vrai pour les non-entiers.
De sorte que vous pouvez utiliser:
'£'
ou'0d0'
?ISNUMERIC
reviendra encore1
.Je pense à l'exclusion de caractère par caractère n'est pas de l'aide que nous pouvons avoir de multiples combinaisons. ex: les caractères spéciaux, des alphabets, etc.
OriginalL'auteur Paul
Même si l'affiche originale a été se référant à SQL 2005, j'ai retrouvé dans 2008 r2 droite
where isnumeric(string)
entraîné une erreur 4145 non-type booléen. Pour résoudre cette utilisation:where isnumeric(string) = 1
OriginalL'auteur Craig
Vous pouvez utiliser l'opérateur LIKE:
LTRIM(RTRIM(str)) NOT LIKE '%[^0-9]%'
pour permettre d'espace blanc autour du nombre.OriginalL'auteur Paul
Voir cette:
OriginalL'auteur Anton Gogolev
C'est un peu difficile de garantir qu'une valeur conforme à 4 octets entier.
Puisque vous êtes à l'aide de 2005 - Une façon est d'essayer de convertir la valeur à l'intérieur d'un bloc try/catch. Ce serait la meilleure manière de s'assurer qu'il est en fait un int. Bien sûr, vous avez besoin pour gérer les cas où il n'est pas dans le bloc catch en fonction de vos besoins.
Un autre moyen de le tester pour seulement "chiffres" est-ce:
où strVal pas like '%[^0-9]%'
Qui vont manquer à -25. ainsi que de permettre '99999999999999999999'
Vous devrez peut-être inclure des critères supplémentaires avec cette méthode.
OriginalL'auteur TG.
À l'aide de ~(CAST(PATINDEX('%[^0-9]%', valeur) BIT)) traite de tous les personnages
OriginalL'auteur Dev
Standart T-SQL fonction ISNUMERIC ( expression )
Détermine si une expression est une valeur de type numérique.
OriginalL'auteur Dewfy