相关疑难解决方法(0)

检查Oracle中的"它是否为数字"功能

我正在尝试检查oracle(10g)查询中的列中的值是否为数字以便进行比较.就像是:

select case when ( is_number(myTable.id) and (myTable.id >0) ) 
            then 'Is a number greater than 0' 
            else 'it is not a number' 
       end as valuetype  
  from table myTable
Run Code Online (Sandbox Code Playgroud)

关于如何检查的任何想法?

oracle plsql oracle10g

35
推荐指数
5
解决办法
18万
查看次数

如何避免隐式转换时出现无效数字

我知道 Oracle(我正在开发 Oracle11gR2)可以隐式地将数据类型相互转换(如果它能够这样做的话)。例如,如果我尝试将数字插入 varchar 区域,它会隐式地将数字转换为 varchar,反之亦然,如果 varchar 是有效数字,则它会转换为数字。

Oracle 也在连接上执行这种隐式转换。如果我将数字列连接到 varchar 列,它会隐式地将 varchar 转换为数字并完成查询。但是,如果 varchar 列中存在任何无效数字,则会抛出一个错误。ORA-01722 : Invalid Number您可以通过运行以下代码来查看此设置:

create table test_1(
  id varchar2(20),
  val number);

create table test_2(
  id number,
  name varchar2(20)
  );

insert into test_1 values ('abc', 10);
insert into test_1 values ('1', 11);
insert into test_2 values (1,'abc');
insert into test_2 values (2,'def');

-- Throw error
select 
  * 
from
 test_1, test_2
where
 test_1.id = test_2.id

-- work
select 
  test_1.id, val, name 
from
 test_1, test_2
where …
Run Code Online (Sandbox Code Playgroud)

sql oracle

2
推荐指数
1
解决办法
2121
查看次数

标签 统计

oracle ×2

oracle10g ×1

plsql ×1

sql ×1