8
votes

Comment sélectionner uniquement des enregistrements comportant un numéro dans la colonne (SQL)

Fondamentalement, je veux faire cela:

Je veux retourner un ensemble d'enregistrements convertissant une valeur NvarcharN (ID) à un entier s'il contient un numéro. Si ID peut être converti en un numéro, ajoutez cette ligne au jeu d'enregistrements code> code>. Sinon, sautez cette ligne. P>

Je pense que le SQL devrait ressembler à quelque chose comme ça. p>

(ID est Nvarchar (10) dans dbo.table) P>

CREATE TABLE #Temp  (ID int)
INSERT INTO #Temp SELECT ID FROM Table Where ISNumeric(Id)=0


0 commentaires

3 Réponses :


12
votes

isnumeric (ID) = 0 doit être iSnumeric (ID) = 1

Cependant isnumeric a un problème

Exécuter ce xxx

ces retournements 1

regardez sur isnumeric, isint, isnumber pour certains moyens de déterminer s'il peut être converti en un entier


0 commentaires

16
votes

Pour être sûr, oubliez Isnumeric

Si vous ne vous attendez pas à des nombres négatifs, vous pouvez utiliser ce P>

INSERT INTO #Temp SELECT ID FROM Table
Where Id > ''  -- is not the empty string and is not null
  AND not ID like '%[^0-9]%'  -- contains digits only


2 commentaires

Pourquoi pas nécessaire ici? Si nous sélectionnons des enregistrements avec des chiffres uniquement, alors pourquoi utiliser pas ?


@Learner parce que '^' est la négation et [^ 0-9] signifie un caractère non chiffré. Sans pas, nous avons des identifiants qui ont au moins un caractère non chiffré



-1
votes

Peut-être que celui-ci pourrait aider: xxx


0 commentaires