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。这消除了我的困惑。你是对的,我需要的是修剪而不是修剪。这消除了我的困惑。