0
votes

Vérifiez si Varchar () est un int

J'ai hérité d'une table dans une opération de troisième partie contenant à la fois des chaînes et des intenses - je veux diviser la table, mais je veux connaître le moyen le plus rapide de déterminer si la valeur est une intensive? La colonne est Varchar (250)

e.g.
Save
123456
Edit
Save
123455
Delete
123444


2 commentaires

@Taballeman, je suggérerais que c'est une duplication médiocre. La plupart de ces réponses recommandent l'utilisation de isnumeric , qui est une fonction affreuse en vérité (prise Sélectionnez cas lorsque ISnumeric ('1.1') = 1 puis convertir (int, '1.1') ; par exemple). try_convert est une option beaucoup meilleure que celles mentionnées là-bas.


Je sais que beaucoup de réponses sur cette question sont pour la fonctionnalité de 2008, mais il y a une réponse qui mentionne à l'aide de try_convert () avec 2012+. Il me semble que la chose à faire est d'ajouter des upvotes à cette réponse dans la question en double, plutôt que d'ajouter ce duplicata au site, ce qui ne contribue rien de nouveau dans la question elle-même.


3 Réponses :


4
votes

Je suggérerais d'utiliser try_convert , qui retournera null si la valeur ne peut pas être convertie: xxx

si vous préférez la syntaxe , vous avez aussi try_cast ( try_cast (YourColumn comme int) ).


4 commentaires

Haha semble que nous avons de nouveau posté la même chose.


@Seanlange So's Les notifications push sont gonflées. Je ne vois pas toujours une autre réponse affichée avant le fait.


@Timbiegeleisen je sais ce que tu veux dire. Là nous n'avons aucune réponse affichée lorsque j'ai cliqué sur Soumettre, mais ensuite, il y en avait deux autres. :)


Fait intéressant, j'ai vu Tim très vite, mais je n'ai même pas vu Sean après avoir reçu la notification de commentaire. J'ai dû f5.



4
votes

Une approche serait d'utiliser l'opérateur code> SQL Server's amélioré de Server: code>

SELECT col
FROM yourTable
WHERE col NOT LIKE '%[^0-9]%';


0 commentaires

4
votes

J'utiliserais try_convert .

declare @Something table(SomeVal varchar(50))

insert @Something values
('Save')
, ('123456')
, ('Edit')
, ('Save')
, ('123455')
, ('Delete')
, ('123444')

select *
from @Something s
where TRY_CONVERT(int, s.SomeVal) is not null


0 commentaires