web-dev-qa-db-fra.com

Comment sélectionner uniquement des valeurs numériques

Tableau 1

id

01
wire
02
steve
ram123
03
....

dans le tableau 1, je souhaite sélectionner uniquement des valeurs numériques, il ne doit pas afficher de valeurs alphanumériques comme (ram123)

Production attendue

01
02
03
....

Comment faire une requête pour cette condition

14
JetJack

Essayez ISNUMERIC

SELECT *
FROM Table1
WHERE ISNUMERIC([ID]) = 1

Démo SQLFiddle

21
John Woo
SELECT * FROM @Table 
WHERE Col NOT LIKE '%[^0-9]%' 
4
highwingers

Je veux juste noter que IsNumeric () a quelques limitations. Par exemple, tout ce qui suit renverra 1.

SELECT ISNUMERIC(' - ')
SELECT ISNUMERIC(' , ')
SELECT ISNUMERIC('$')
SELECT ISNUMERIC('10.5e-1')
SELECT ISNUMERIC('$12.09')

Donc, si vous ne cherchez qu'à sélectionner des nombres UNIQUEMENT, alors quelque chose comme ça pourrait fonctionner:

create function [dbo].[IsNumbersOnly](@strSrc as varchar(255))
returns tinyint
as
begin

    return isnumeric(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(
        @strSrc, '\', 'x'), '-', 'x'), ',', 'x'), '+', 'x'), '$', 'x'), '.', 'x'), 'e', 'x'), 'E', 'x'),
        char(9), 'x'), char(0), 'x'))
end
1
Void Ray

Vous pouvez utiliser la fonction de traduction et de remplacement ensemble. traduisez d'abord les nombres par 0, puis remplacez-les par null et renvoyez uniquement des valeurs nulles pour résoudre le problème.

select column from table where  replace(translate(column,'0123456789','0000000000'),'0','') is null 
0
sumeyrad
 SELECT column1 FROM table where ISNUMERIC(column1) = 1
0
Raj Adroit