ORA-00907: 缺失右括号 整理解决
ORA-00907: 缺失右括号
前言
最近在开发过程中使用oracle数据库,在程序中进行查询数据时遇到了“ORA-00907: 缺失右括号”的问题,但是如果直接把sql语句直接在数据库或PL/SQL中执行时,却又能够正常查询,为了解决这个问题,折腾了半天,查找了一些资料,所以就对各种导致出现“缺失右括号”的情况进行了整理总结。行文如下。
1 union all中order by 导致缺失右括号
在有union all的子查询中使用了order by,会导致缺失右括号的错误,事实上在有union all的子查询中根本没必要进行排序,因为联合之后又组成了一个新的集合,之前的排序对新集合而言没什么用,直接查询联合之后的新集合然后再进行排序即可。
示例如下:
select * from
(
select COLUMN_A,COLUMN_B
from TABLE_EXAMPLE_A
order by COLUMN_A
union all
select COLUMN_A,COLUMN_B
from TABLE_EXAMPLE_B
order by COLUMN_A
) A;
解决方案如下:
select * from
(
select COLUMN_A,COLUMN_B
from TABLE_EXAMPLE_A
union all
select COLUMN_A,COLUMN_B
from TABLE_EXAMPLE_B
) A;
order by COLUMN_A
2. in (子查询)的用法中,子查询不能使用order by!
此种情况跟1中描绘的有些类似,首先在in(子查询)用法使用order by 会报错,其次,子查询里用order by,纯属多此一举,子查询的目的,只是找出合适的数据。如果需要排序,在外边排即可。
示例如下:
Select * from TABEL_EXAMPLE where ID in(select ID from TABLE_EXAMPLE where ID>500 oder by ID DESC)
解决方案如下:
Select * from TABEL_EXAMPLE where ID in(select ID from TABLE_EXAMPLE where ID>500)oder by ID DESC
3. 创建表时,提示缺失又括号
3.1 创建表时关键字顺序错
示例如下:
CREATE TABLE T_EXAMPLE (
id serial primary key,
t_id int not null default 0
)
解决方案如下:
CREATE TABLE T_EXAMPLE
(
id serial primary key,
t_id int default 0 not null
)
3.2 创建表时表中字段有关键字
示例如下:
CREATE TBALE
T_EXAMPLE
(
id
number(18,0) not null,
desc
varchar(45) not null
)
解决方案如下:
给对应的关键字加上双引号
CREATE TBALE
T_EXAMPLE
(
id
number(18,0) not null,
“desc” varchar(45) not null
)
3.3 创建表时未对表中的字段设置长度
示例如下:
CREATE TABEL
T_EXAMPLE
(
id bigint NOT NULL PRIMARY KEY,
name varchar NOT NULL
)
解决方案如下:
CREATE TABEL
T_EXAMPLE
(
id bigint NOT NULL PRIMARY KEY,
name varchar(200) NOT NULL
)
3.4 创建主外键约束时外键类型跟主键类型不完全一致
主外键类型不完全一致时也会报缺失右括号的错误
4. SQL查询时发生缺失右括号错误
在查询时引发缺失右括号错误的原因大多数在于查询语句中有关于日期的转化、过滤。很多时候都是因为关于日期类型的转化少了单引号。
示例如下:
SELECT * FROM T_EXAMPLE Where T_DATE in(2015-01-20 22:37)
解决方案如下:
SELECT * FROM T_EXAMPLE Where T_DATE in(‘2015-01-20 22:37‘)
还有一种情况就是在where过滤中进行时间的转化时,有时候在sql/plus中直接执行没问题,但是在程序中却会出现错误。
示例如下:
SELECT * FROM T_EXAMPLE Where
ID in(select ID From T_EXAMPLE_B where D_DATE>=TO_DATE(‘2015-01-20’,’yyyy-mm-dd’))
该语句在数据库直接执行是没问题的,但是在程序中执行传入日期参数时有时会报缺失右括号的错误,为了解决这个问题,我们可以改变传入的日期参数的格式,如下:
SELECT * FROM T_EXAMPLE Where
ID in(select ID From T_EXAMPLE_B where D_DATE>=TO_DATE(20150120,’yyyy-mm-dd’))
还有一种关于oracle日期格式的错误是:ORA-01840:
输入值对于日期格式不够长
示例如下:select to_date(2015-01-01,'yyyy-mm-dd') from dual
为了解决这个问题,我们也可以用改变传入的日期参数的格式,来解决,如下:
select
to_date(20150101,'yyyy-mm-dd') from dual
5. 其他导致缺失右括号的原因
5.1 书写错误,确实缺少了一个括号
5.2 字段名缺少双引号
如果在创建表时,表字段名全部是大写,则不存在此问题
ORA-00907: 缺失右括号 整理解决的更多相关文章
- ORA-00907: 缺失右括号,原因及解决办法整理
ORA-00907: 缺失右括号,原因及解决办法整理 1 union all中order by 导致缺失右括号 在有union all的子查询中使用了order by,会导致缺失右括号的错误,事实上在 ...
- ORA-00907: 缺失右括号问题整理解决
ORA-00907: 缺失右括号 前言 近期在开发过程中使用oracle数据库,在程序中进行查询数据时遇到了"ORA-00907: 缺失右括号"的问题.可是假设直接把sql语句直接 ...
- ORA-00907: 缺失右括号(通用解决办法)
PL/SQL 的SQL语句可以执行,但是放在hibernate中,后台打印,出现了错误. 错误的SQL解析:黄色为错误部分 Hibernate: select examine ...
- [转]ORA-00907: 缺失右括号
转至:http://www.cnblogs.com/Olive116/p/5149680.html ORA-00907: 缺失右括号 前言 最近在开发过程中使用oracle数据库,在程序中进行查询数据 ...
- ORA-00907: 缺失右括号
创建表时出现ORA-00907: 缺失右括号的情况 调整关键字的顺序 CREATE TABLE s_dept(ID PRIMARY KEY NOT NULL NUMBER(7),NAME NOT NU ...
- Oracle创建表格报ORA-00906:缺失左括号错误解决办法
来源于:http://www.linuxidc.com/Linux/2013-06/85297.htm 解决办法: create table myTable(id number(5,2),name v ...
- 【java】oracle好用,但java运行缺失右括号
可能原因SQL拼接有空格被省略导致sql粘连. 解决办法,扩大拼接或者缩小拼接范围.
- ORA-00907: 缺失右括号问题或com.alibaba.druid.sql.parser.ParserException: TODO :IDENTIFIER的原因
以上只是说明错误的原因的一种.
- 前端学习笔记系列一:8 <noscript>…</noscript>,网站路径,vscode跳出右括号
1.<noscript>…</noscript> 在body中使用此段代码,可识别 <script> 标签但无法支持其中的脚本的浏览器. 此段代码意思为如果浏览器不 ...
随机推荐
- WordPress使用记录
主要记录WordPress4.7使用过程中遇到的一些问题及解决办法. 1.无法显示主题列表 问题:新的版本主题管理页面是只显示当前主题的,无法进行管理. 解决:修改php.ini文件,参考这里.
- Android ListView 多样式Item的一个注意点:(
闲来无事,在写一个多样式Item的ListView的Demo时,遇到了一个以前没遇过的问题; ╮( ̄▽ ̄")╭ 我们知道,ListView里可以有多种样式的item, 实现只需要重写: @O ...
- 总结之H3C汇聚层交换机认证在线人数展示系统
前情提要:意外接了老师说的一个小程序,然后计划7天(实际10天)的小项目就冒出来了. (1)时间与工程量.在和老师开始谈具体需求前,我凭感觉猜了猜完成这个小项目的时间.然后,再和老师确定需求后,再回头 ...
- sqlite实现oracle的rownum功能
SELECT (SELECT COUNT(*) FROM [table] AS t2 WHERE t2.name <= t1.name) AS rowNum, id, name FROM [ta ...
- PHP 爬虫
1.爬虫的本质简单来说,就是读取页面源代码,然后用正则匹配得到想要的数据. 示例如下: private function spider_jiuyou_list($listname,$url) { ...
- 在VC下采用ADO实现BLOB(Binary)数据的存储,读取,修改,删除。
在VC下采用ADO实现BLOB(Binary)数据的存储,读取,修改,删除. 作者:邵盛松 2009-09-05 前言 1关于的BLOB(Binary)数据的存储和读取功能主要参考了MSDN上的一篇& ...
- C++ 容器 LIST VECTOR erase
在Vector中 做erase操作就是按照下面的步骤来做的: copy() destory(); 在list容器中 erase操作 destory() deallocate() Vector使用从某 ...
- Gradle简介和安装
一.Gradle介绍 Gradle是一个基于JVM的构建工具,它提供了:像Ant一样,通用灵活的构建工具,可以切换的,基于约定的构建框架,强大的多工程构建支持,基于Apache Ivy的强大的依赖管理 ...
- C#数据类型分类
C#是强类型语言,所以在定义每一个变量.常量和对象的时候都必须声明该类型. C#数据类型分为值类型.引用类型和指针类型(指针类型很少用): C#数据类型还可以分为内置类型.匿名类型和自定义类型.
- SOJ 1717 Computer (单机任务调度)
一.题目描述 Constraints :Time Limit: 2 secs, Memory Limit: 32 MB Description: We often hear that computer ...