ORACLE报错合集整理

本文探讨了在使用Oracle数据库时遇到的一些常见SQL错误,如缺失右括号、表达式问题、数据类型不匹配和FROM关键字遗漏。还强调了在WHERE子句中不应使用聚合函数,而应在HAVING子句后使用。同时,解释了UNION和UNION ALL的区别及使用注意事项。解决这些问题的关键在于确保SQL语句的语法正确,字段匹配,并恰当使用分组和聚合函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

缺失右括号

缺失右括号:oracle不区分大小写,但是在添加“之后,Oracle区分大小写的功能会缺失,不会改变大写,因此需要全程大写,或者脚本代码中加上“”,例如:select * from “wafer_detail”

缺失表达式

a.在from前或者表达式前有逗号

b.语法错误导致在其他地方报错,出现红色波浪号

c.数据类型不匹配,尤其是日期统一输入字符串型,实际是日期型

未找到要求的from关键字

查询字段中有未加逗号

不是group by表达式的原因

查询的所有字段,在group by中都要写出来,和mysql不同

分组函数要搭配group  by使用,否则会报错

例如:

select a,b,c from name
where a like '张%'
group  by  a,b,c

模块不具有正确的结果列

  1. union指令的目的是将两个sql语句的查询结果合并起来, 可以查看你要的查询结果 。
  1. 但是要注意使用union连接的两个sql 语句的字段类型 、 字段个数 、 字段名要求完全匹配 。
  2. union在进行表连接后会对产生的结果进行排序运算 , 删除重复数据后返回结果 。
  3. union 与 unnion的效果是一样的 , 都是讲两个sql的查询结果合并 , 但是不同的是 union会将结果集进行排序后删除重复数据后返回 , 而union all 是直接将两个sql语句的查询结果合并返回 。所以从效率上来讲union all 要比union快得多 。
  4. 具体原因: 在使用union 合并查询结果时 , 两个结果集的字段名, 字段个数 , 字段类型 可能有不同 。
  • 解决方法:
    • 使两个sql的各自的结果集的字段名 、 字段类型 、 字段个数 保持一致
    • 使两个sql 的结果集中的字段顺序保持一致 。

不能使用分组函数

在where中不能使用avg()等类似的函数

WHERE中不能使用聚合函数作为过滤条件,原因是过滤时机不对。

WHERE是在数据库检索表中数据时,对数据逐条过滤以决定是否查询出该数据时使用的,所以WHERE用来确定结果集的数据。

使用聚合函数的结果作为过滤条件,那么一定是数据从表中查询完毕(WHERE在查询过程中发挥作用)得到结果集,并且分组完毕才进行聚合函数统计结果,得到后才可以对分组进行过滤,由此可见,这个过滤时机是在WHERE之后进行的。

聚合函数的过滤子句要在having后使用,having必须在group  by之后,过滤分组,

此文章为学习时自己整理,不是原创,只是自己记录,方便学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值