首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在case语句和insert中使用引号的Oracle差异

在case语句和insert中使用引号的Oracle差异
EN

Stack Overflow用户
提问于 2020-02-14 04:27:49
回答 1查看 70关注 0票数 1

我遇到了这样的情况:基于'‘on number列的insert很好,而case语句提供了不同的错误。“不一致的数据类型:预期%s获得%s”

我已经看过了这里给出的一些解释(ORA-00932不一致数据类型预期字符获得编号 )和Oracle情况时ORA-00932:不一致的数据类型:预期CHAR得到编号00932。00000 -“不一致的数据类型:预期%s获得%s”,我知道我需要不用引号来使用它,但是我想了解case语句的行为。SQL server的行为不是这样的,而是为什么只有oracle。此oracle默认行为是否带有case语句。

如果我创建和插入值,我可以做到这一点,没有任何错误。

代码语言:javascript
复制
create table testtbl (name varchar2(50), id number(10,2)); 

insert into testtbl values ('abc', '123'); 
insert into testtbl values ('test', '200'); 

当我试图使用case语句更新列时,我得到了这个错误。我可以使用to_number或删除引号来避免这个错误,但我想了解为什么在use语句中给出的列本身是number时,引号会发生。Oracle中不存在隐式转换吗?

代码语言:javascript
复制
update testtbl 
set id = case when name = 'abc' then '5000' else id end;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-14 07:59:59

Oracle中不存在隐式转换吗?

确实如此。见文档(如这里 )。

此oracle默认行为是否带有case语句。

是。来自文档

对于简单和搜索的案例表达式,所有return_exprs都必须具有相同的数据类型(CHAR、VARCHAR2、NCHAR或NVARCHAR2、NCHAR、BINARY_FLOAT或BINARY_DOUBLE),或者都必须具有数字数据类型。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60220000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档