ISNumeric Альтернативы для Oracle - PullRequest
0 голосов
/ 28 мая 2019

Я хочу посмотреть, какое значение больше A или B. Это строки, но большинство строк содержат только числа.мне нужно преобразовать эти числа, чтобы я мог использовать операторы> и <.</p>

Они не хотят, чтобы я создал функцию в «их» базе данных.Так что это не вариант.Я попробовал Лукаш Шозда с его подходом к "Safe" TO_NUMBER () , но это просто дает мне "Missing Right Parenthesis"

Я пытался https://docs.oracle.com/cd/E51367_01/financialsop_gs/FADRA/ch09s05s53.html Также не удалось.

И я попробовал с REGEX, но тоже не повезло.

SELECT *
FROM Table
WHERE 
(
 TO_NUMBER('T' DEFAULT 0 ON CONVERSION ERROR) 
 > 
 TO_NUMBER('5' DEFAULT 0 ON CONVERSION ERROR)
)

SELECT *
FROM Table
WHERE 
(
 TO_NUMBER('7' DEFAULT 0 ON CONVERSION ERROR) 
 > 
 TO_NUMBER('5' DEFAULT 0 ON CONVERSION ERROR)
)

Первый бит кода ничего не должен возвращать, второй - всю таблицу.Но все, что я получаю, это "Отсутствие правильных скобок"

1 Ответ

2 голосов
/ 28 мая 2019

Как отмечается в ответе Лукаша на вопрос, с которым вы связались, синтаксис on conversion error был добавлен в 12cR2 , поэтому вы не можете использовать его в 11gR2 - что является причиной ошибки, которую вы получаете.

Метод регулярного выражения, описанный в этом вопросе, работает, хотя:

SELECT *
FROM dual
WHERE 
(
 COALESCE(TO_NUMBER(REGEXP_SUBSTR('T', '^\d+')), 0) 
 > 
 COALESCE(TO_NUMBER(REGEXP_SUBSTR('5', '^\d+')), 0)
);

no rows selected

SELECT *
FROM dual
WHERE 
(
 COALESCE(TO_NUMBER(REGEXP_SUBSTR('7', '^\d+')), 0)
 > 
 COALESCE(TO_NUMBER(REGEXP_SUBSTR('5', '^\d+')), 0)
);

D
-
X
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...