TRUNC (NVL (COLUMN, '2')) ORA-01722: неверный номер - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть столбец в таблице, который является varchar2(3) столбцом стиля.В этом столбце есть несколько нулей, и когда я пытаюсь выполнить следующий запрос, он запускается для некоторых записей, но при переходе к какой-либо записи я получаю ORA-01722: invalid number ошибку.

Используемый запрос:

Select TRUNC(NVL(COLUMN, '2'))
from TABLE;

Также я запустил отчет по столбцу, чтобы увидеть, какие значения он имеет.

Select distinct COLUMN
from TABLE;

Я получил следующие результаты:

1   
2   62
3   90
4   70
5   82
6   71
7   05
8   21
9   81
10  66
11  12
12  95
13  02
14  91
15  92
16  94
17  01
18  65
19  30
20  20
21    
22  50
23  63
24  51
25  64
26  09

Почему я получаю эту ошибку и как я могу сделать это, не получаяошибка?

1 Ответ

0 голосов
/ 13 сентября 2018

https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions200.htm

Поскольку вы хотите обрезать строку, но функция TRUNC предназначена для number или date.

Эта функция принимает в качестве аргумента любой числовой тип данных или любой нечисловой тип данных, который может быть неявно преобразован в числовой тип данных

Возможно, одно из ваших строковых значений не может быть преобразовано в число

edit: ваше значение 21t не является числом и не равно нулю, вы должны обрезать столбец

SELECT trunc(nvl(trim(column),'2')) 
FROM table;
...