Маса 1
id
01
wire
02
steve
ram123
03
....
от таблица1 искам да избера само числови стойности, тя не трябва да показва буквено-цифрови стойности като (ram123)
Очакван резултат
01
02
03
....
Как да направите заявка за това състояние
Маса 1
id
01
wire
02
steve
ram123
03
....
от таблица1 искам да избера само числови стойности, тя не трябва да показва буквено-цифрови стойности като (ram123)
Очакван резултат
01
02
03
....
Как да направите заявка за това състояние
Опитайте ISNUMERIC
SELECT *
FROM Table1
WHERE ISNUMERIC([ID]) = 1
Само искам да отбележа, че IsNumeric() има някои ограничения. Например всички по-долу ще върнат 1.
SELECT ISNUMERIC(' - ')
SELECT ISNUMERIC(' , ')
SELECT ISNUMERIC('$')
SELECT ISNUMERIC('10.5e-1')
SELECT ISNUMERIC('$12.09')
Така че, ако искате да избирате САМО числа, тогава нещо подобно може да работи:
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
Можете да използвате функцията за превод и замяна заедно. първо преведете числата на 0, след това ги заменете с null и връщайте само null стойности, което може да реши проблема.
select column from table where replace(translate(column,'0123456789','0000000000'),'0','') is null
Опитах горния код (ISNUMERIC()
) и някак си не работи в Oracle SQL.
Но намерих работещо решение за Oracle SQL:
SELECT column1
FROM Table
WHERE regexp_like( column1, '^[[:digit:]]*$');
От: https://community.oracle.com/thread/2394572