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 * fromTABEL_EXAMPLE where ID in(select ID from TABLE_EXAMPLE where ID>500 oder byID DESC)

解决方式例如以下:

Select * fromTABEL_EXAMPLE where ID in(select ID from TABLE_EXAMPLE where ID>500)oder by ID DESC

3. 创建表时,提示缺失又括号

3.1 创建表时keyword顺序错

示比例如以下:

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 创建表时表中字段有keyword

示比例如以下:

CREATE TBALET_EXAMPLE
(
  id      number(18,0) not null,
  desc    varchar(45) not null

)

解决方式例如以下:

给相应的keyword加上双引號

CREATE TBALET_EXAMPLE
(
  id      number(18,0) not null,
  “desc”     varchar(45) not null

)

3.3 创建表时未对表中的字段设置长度

示比例如以下:

CREATE TABELT_EXAMPLE

(

id bigint NOT NULL PRIMARY KEY,
name varchar NOT NULL

)

解决方式例如以下:

CREATE TABELT_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

为了解决问题,我们也能够用改变传入的日期參数的格式,来解决,例如以下:

selectto_date(20150101,'yyyy-mm-dd') from dual

5. 其它导致缺失右括号的原因

5.1 书写错误,确实缺少了一个括号

5.2 字段名缺少双引號

假设在创建表时,表字段名所有是大写,则不存在此问题

ORA-00907: 缺失右括号问题整理解决的更多相关文章

  1. ORA-00907: 缺失右括号(通用解决办法)

    PL/SQL 的SQL语句可以执行,但是放在hibernate中,后台打印,出现了错误. 错误的SQL解析:黄色为错误部分 Hibernate:      select         examine ...

  2. ORA-00907: 缺失右括号 整理解决

    ORA-00907: 缺失右括号 前言 最近在开发过程中使用oracle数据库,在程序中进行查询数据时遇到了“ORA-00907: 缺失右括号”的问题,但是如果直接把sql语句直接在数据库或PL/SQ ...

  3. ORA-00907: 缺失右括号,原因及解决办法整理

    ORA-00907: 缺失右括号,原因及解决办法整理 1 union all中order by 导致缺失右括号 在有union all的子查询中使用了order by,会导致缺失右括号的错误,事实上在 ...

  4. [转]ORA-00907: 缺失右括号

    转至:http://www.cnblogs.com/Olive116/p/5149680.html ORA-00907: 缺失右括号 前言 最近在开发过程中使用oracle数据库,在程序中进行查询数据 ...

  5. ORA-00907: 缺失右括号

    创建表时出现ORA-00907: 缺失右括号的情况 调整关键字的顺序 CREATE TABLE s_dept(ID PRIMARY KEY NOT NULL NUMBER(7),NAME NOT NU ...

  6. 【java】oracle好用,但java运行缺失右括号

    可能原因SQL拼接有空格被省略导致sql粘连. 解决办法,扩大拼接或者缩小拼接范围.

  7. ORA-00907: 缺失右括号问题或com.alibaba.druid.sql.parser.ParserException: TODO :IDENTIFIER的原因

    以上只是说明错误的原因的一种.

  8. 前端学习笔记系列一:8 <noscript>…</noscript>,网站路径,vscode跳出右括号

    1.<noscript>…</noscript> 在body中使用此段代码,可识别 <script> 标签但无法支持其中的脚本的浏览器. 此段代码意思为如果浏览器不 ...

  9. 2018 php的flush和ob_flush不起作用 整理解决

    2018 php的flush和ob_flush不起作用 整理解决成功解决. 要点 : 使用函数 str_repeat2处配置:检查php.ini.Nginx 中有下面两个设置使用方式:echo str ...

随机推荐

  1. [原创]react-vio-form 快速构建React表单应用

    react-vio-form 是一个react的快速轻量表单库,能快速实现表单构建.提供自定义表单格式.表单校验.表单信息反馈.表单信息隔离等功能.可采用组件声明或者API的形式来实现表单的功能 de ...

  2. Vijos——T1279 Leave-绿光

    https://vijos.org/p/1279 背景 期待这一份幸运,和一份冲劲,多么奇妙的际遇…….燕姿在演唱完绿光这首歌后,出给了姿迷一个考题. 北欧有一个传说!人一生中能看见绿光!他就一生都可 ...

  3. c3p0的经常使用配置方式

    1:第一种方式很easy c3p0.driverClass=com.mysql.jdbc.Driver c3p0.jdbcUrl=jdbc:mysql://localhost:3308/databas ...

  4. 1.16 Python基础知识 - 装饰器初识

    Python中的装饰器就是函数,作用就是包装其他函数,为他们起到修饰作用.在不修改源代码的情况下,为这些函数额外添加一些功能,像日志记录,性能测试等.一个函数可以使用多个装饰器,产生的结果与装饰器的位 ...

  5. menuconfig_kconfig

    这一节的主要内容: Menuconfig的操作 Kconfig和.config文件 Linux内核配置裁剪实验 linux编译器通过.config文件确认哪些代码编译进内核,哪些被裁减掉 menuco ...

  6. linux网站发布操作流程

    Linux 添加用户命令: useradd bm -g webTemp http://www.runoob.com/linux/linux-vim.html Linux关于网站发布操作流程 虚拟机地下 ...

  7. OpenCV func

    cvLoadImage("lena.jpg", CV_LOAD_IMAGE_COLOR);  //CV_LOAD_IMAGE_GRAYSCALE   //0

  8. 【AtCoder Regular Contest 082 F】Sandglass

    [链接]点击打开链接 [题意] 你有一个沙漏. 沙漏里面总共有X单位的沙子. 沙漏分A,B上下两个部分. 沙漏从上半部分漏沙子到下半部分. 每个时间单位漏1单位的沙子. 一开始A部分在上面.然后在r1 ...

  9. hibernate 的映射文件快速生成:使用CodeSmith快速生成映射文件和映射类

    一 CodeSmith简介 本文以表自动生成NHibernate的映射文件和映射类的实例来说明一下本软件的使用方法. CodeSmith是一种基于模板的代码生成工具,其使用类似于ASP.NET的语法来 ...

  10. ajax利用php上传图片

    <script type="text/javascript"> window.onload = function(){ document.getElementById( ...