Sql TRUNC(NVL(列,和#x27;2和#x27;)ORA-01722:无效数字

Sql TRUNC(NVL(列,和#x27;2和#x27;)ORA-01722:无效数字,sql,oracle,oracle12c,Sql,Oracle,Oracle12c,表中有一列是varchar2(3)style列。此列有一些空值,当我尝试运行以下查询时,它会运行一些记录,但当我滚动到某个记录时,我得到ORA-01722:invalid number错误 使用的查询: Select TRUNC(NVL(COLUMN, '2')) from TABLE; 我还在列上运行distinct以查看它有哪些值 Select distinct COLUMN from TABLE; 我得到了以下结果: 1 2 62 3 90 4 70 5 82 6

表中有一列是
varchar2(3)
style列。此列有一些空值,当我尝试运行以下查询时,它会运行一些记录,但当我滚动到某个记录时,我得到
ORA-01722:invalid number
错误

使用的查询:

Select TRUNC(NVL(COLUMN, '2'))
from TABLE;
我还在列上运行distinct以查看它有哪些值

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
为什么会出现此错误?如何才能在不出现错误的情况下执行此操作?

因为您想要trunc字符串,但是
trunc
函数用于
number
date

此函数将任何数值数据类型或任何可隐式转换为数值数据类型的非数值数据类型作为参数

可能您的字符串值之一无法转换为数字

编辑:您的21t值不是数字,也不是空值,您应该修剪列

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

因为您想要trunc字符串,但是
trunc
函数用于
number
date

此函数将任何数值数据类型或任何可隐式转换为数值数据类型的非数值数据类型作为参数

可能您的字符串值之一无法转换为数字

编辑:您的21t值不是数字,也不是空值,您应该修剪列

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

你要找的是
trim()
?你要找的是
trim()
?你是对的,我需要的是trim而不是TRUNC。这消除了我的困惑。你是对的,我需要的是修剪而不是修剪。这消除了我的困惑。