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
SELECT * FROM @Table
WHERE Col NOT LIKE '%[^0-9]%'
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
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
SELECT column1 FROM table where ISNUMERIC(column1) = 1