Как да изберете само числови стойности

Маса 1

id

01
wire
02
steve
ram123
03
....

от таблица1 искам да избера само числови стойности, тя не трябва да показва буквено-цифрови стойности като (ram123)

Очакван резултат

01
02
03
....

Как да направите заявка за това състояние


person JetJack    schedule 30.09.2012    source източник


Отговори (6)


Опитайте ISNUMERIC

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

Демонстрация на SQLFiddle

person John Woo    schedule 30.09.2012

Само искам да отбележа, че 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
person Void Ray    schedule 30.09.2012
comment
Или просто използвайте WHERE ID NOT LIKE '%[^0-9]%' - person GilM; 30.09.2012
comment
Това също би свършило работа; просто исках да спомена ограниченията... Благодаря! - person Void Ray; 30.09.2012

Можете да използвате функцията за превод и замяна заедно. първо преведете числата на 0, след това ги заменете с null и връщайте само null стойности, което може да реши проблема.

select column from table where  replace(translate(column,'0123456789','0000000000'),'0','') is null 
person sumeyrad    schedule 16.08.2017

Опитах горния код (ISNUMERIC()) и някак си не работи в Oracle SQL.
Но намерих работещо решение за Oracle SQL:

SELECT column1
FROM Table
WHERE regexp_like( column1, '^[[:digit:]]*$');

От: https://community.oracle.com/thread/2394572

person Alex Fong    schedule 02.06.2020

person    schedule
comment
SELECT * FROM @Table WHERE Col NOT LIKE '%[^0-9.-]%' - person highwingers; 01.10.2012
comment
Това показва, че не е ясно какво означава Numeric. От примерните данни в първоначалния въпрос изглежда, че може да са чисто цифрови цифри (в който случай този оригинален отговор е правилен) или може да включва други знаци като - и .. Може би това означава това, което Microsoft е внедрил с ISNUMERIC, но никога не съм чувал някой да очаква това да означава това :-) . - person GilM; 01.10.2012
comment
да GilM, никога не съм разчитал на функцията isNumeric в SQL или Asp Classic. - person highwingers; 01.10.2012

person    schedule
comment
Как този отговор е различен от другия? - person Mahmoud Gamal; 30.09.2012
comment
Тази заявка работи в Oracle - person jatin Goyal; 03.12.2017