小编Can*_*mer的帖子

如果y <x,PL/SQL"在x和y之间"不起作用.为什么?

我有一个PL/SQL代码,如:

case when column between 201203 and 201201
then other_column
end
Run Code Online (Sandbox Code Playgroud)

我知道列中的值是201203.因此代码应该返回一些值.但直到我纠正它为止:

case when column between 201201 and 201203
then other_column
end
Run Code Online (Sandbox Code Playgroud)

关键字之间的原因是什么?它是如何在Oracle数据库上实现的?

oracle plsql

6
推荐指数
1
解决办法
6372
查看次数

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

我知道 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

plsql ×1

sql ×1