Как выбрать строки, которые имеют номера в качестве значения? - PullRequest
0 голосов
/ 13 января 2020

У меня есть таблица со столбцом типа VARCHAR2 (255 байт). Я хотел бы выбрать только эти строки, которые имеют числа в качестве значения, поэтому я отбрасываю любые другие значения, например, "lala", "1z". Я просто хочу иметь чистые числа от 1 до ..... 999999999 (просто цифровые числа другими словами): P

Не могли бы вы сказать мне, как это сделать?

Ответы [ 4 ]

2 голосов
/ 13 января 2020

, если вы используете Oracle 12 c r2 или более позднюю, тогда используйте встроенную функцию validate_conversion():

select *
from your_table
where validate_conversion(cast(your_column as number)) = 0

validate_conversion() возвращает 0, когда предлагаемое преобразование будет успех и 1, когда этого не произойдет. Он также поддерживает преобразование даты и времени. Узнать больше .

1 голос
/ 13 января 2020

Вот версия регулярного выражения kfinity. Регулярное выражение соответствует строке, состоящей из 1 или более цифр.

select column1 
from tableA
where regexp_like(column1, '^\d+$');
1 голос
/ 13 января 2020

Вы не хотите ноль, чтобы начать число. Похоже, что регулярные выражения - это путь к go:

where regexp_like(column1, '^[1-9][0-9]*$');
1 голос
/ 13 января 2020

Примерно так обычно. Вы можете использовать регулярное выражение, но обычно оно немного медленнее.

select column1 
from tableA
where translate(column1, '1234567890', '') is null;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...