求高手,oracle一直报这个错误:ORA--00923 无法在应该出现from关键字的位置上找到它,如何解决

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求高手,oracle一直报这个错误:ORA--00923 无法在应该出现from关键字的位置上找到它,如何解决相关的知识,希望对你有一定的参考价值。

sql如下:select a.id_no_sz 工号,
a.name_sz 姓名,
a.segment_no 部门,
a.dif_hours 差异时数,
a.actual_cardhours 刷卡出勤时数,
a.intime 排班上班开始时间,
a.outtime 排班上班结束时间,
a.inactual 实际上班开始时间,
a.outactual 实际上班结束时间,
a.dayhours 排班出勤时数,
a.actual_day_hours 实际出勤时数,
a.segment_no_sz 部门代号,
a.segment_name 部门名称,
a.indate 到职日期,
a.outdate 离职日期,
a.period_master_no 计薪期间,
a.period_detail_no 期间每月,
a.day 考勤日,
a.trail_date 试用期间天数,
a.trail_date1 试用期满天数,
a.n_overtime_hour 平日加班计费(时),
a.s_overtime_hour 假日加班计费(时),
a.h_overtime_hour 法定加班计费(时),
a.b_overtime_hour 补休时数(时),
a.overtime_detail 加班明细,
a.night_days 夜班天数,
a.absence_detail 请假明细,
a.late_count 迟到(次),
a.early_count 早退(次),
a.forget_count 忘刷卡(次),
a.rest_year_hour 剩馀年休(时)

from chil_attend_day a, hr_personnel_base b
where a.id_no_sz = b.id_no_sz
and b.seg_segment_no = '4274'
and b.carding = '02'

假如用select * from 则不会报错,一加那些栏位就报错

插上U盘后能使用正常,但任务栏里没有安全删除硬件的图标,不知道怎么修复,这里分享下修复方法。

1、首先在开始菜单中,打开“控制面板”程序。

2、在控制面板窗口中,拖动滚动条,找到“系统”这个图标,双击。

3、进入系统属性窗口后,选择“硬件”下的“设备管理器”按钮。

4、在设备管理器窗口,选择“磁盘驱动器”下的“U盘设备”,然后右键,选择属性。

5、这时在属性窗口中,选择“策略”这个选项卡。

6、进入策略界面,原来所选择的是“为快速删除而优化”这一项。

7、把它修改一下,选择“为提高性能而优化”这一项,设置好后,按“确定”按钮。

8、这时,再到任务栏通知区域去删除U盘,就能弹出“安全删除硬件”的提示。

参考技术A 既然是这样的话,那就一步步的推敲下去,你不也知道问题出在哪里了吗,用*代替的话就不报错,那也就是说你的这条sql语句无论是从语法上还是逻辑上来讲都是没问题的,但一旦改为具体的列就出现问题,那很显然就出列的问题了,而如果是某个(些)列定义出错的话,如引用不存在的列(列名写错的话),那么报的应该是00904的错误,而现在不是,那么也就排除了这种情况,你观察一下,你为每一列定义别名存在一个什么突出的特点,有些列的表名用上了括号,而你有没有为该别名用一对双引号来标示出来,那么在编译的时候就会识别不了这个括号,这就如同你在定义别名的时候如果存在空格,就必须用上一对双引号来括起来,但我们在平时的书写中,无论你定义的别名是什么最好都用上一对双引号以示区分。追问

谢了。按照你的方法推敲找到原因了

本回答被提问者采纳
参考技术B (时),(次)这样的小括号的问题。被解析错了。
把小括号去掉,或者把那些重命名用引号引起来试试。追问

()没问题的。。把这几个注释掉。。运行还是一样的错误

追答

一定是括号的问题,另外,你把重命名的字段名都用引号引起来。
另外,您执行
select a.id_no_sz 工号,
a.name_sz 姓名,
a.segment_no 部门,
a.dif_hours 差异时数,
a.actual_cardhours 刷卡出勤时数,
a.intime 排班上班开始时间,
a.outtime 排班上班结束时间,
a.inactual 实际上班开始时间,
a.outactual 实际上班结束时间,
a.dayhours 排班出勤时数,
a.actual_day_hours 实际出勤时数,
a.segment_no_sz 部门代号,
a.segment_name 部门名称,
a.indate 到职日期,
a.outdate 离职日期,
a.period_master_no 计薪期间,
a.period_detail_no 期间每月,
a.day 考勤日,
a.trail_date 试用期间天数,
a.trail_date1 试用期满天数,
a.overtime_detail 加班明细,
a.night_days 夜班天数,
a.absence_detail 请假明细
from chil_attend_day a, hr_personnel_base b
where a.id_no_sz = b.id_no_sz
and b.seg_segment_no = '4274'
and b.carding = '02'
看看是否报错?
把重命名引起来应该是没问题的,但是ORACLE,即使是不引起来,应该也是可以的。

参考技术C 请每个中人别名最好加上双引号.这样基本就不会出现了.追问

什么意思~~用select * from 这样的形式就不会报错。。。。。一加a.id_no_sz 这种就报那错误

追答

select a.id_no_sz "工号" --像这样
from chil_attend_day a, hr_personnel_base b
where a.id_no_sz = b.id_no_sz
and b.seg_segment_no = '4274'
and b.carding = '02'

参考技术D 加了那几个栏位报错了?

求oracle 数据库高手 围观 此问题: 执行下面代码 报此错误:ora-01722:无效数字

select '按日期统计',(T1.cost*1/T2.cost*1)*100 pct,ltrim(T1.cost)+'/'+ltrim(T2.cost)
cont from (select count(cm.policycode)cost from casetotalsummarize ctsm,casemessage cm
where ctsm.policycode = cm.policycode and ctsm.casenumber = cm.casenumber and ctsm.grade_hs='C'
and cm.way_hs='' and (cm.handledate_hs between date'2011-10-12' and date'2011-11-29')
and cm.link='核损') T1,(select (case when count(ctsm.policycode)=0 then 1 else count(ctsm.policycode)
end) cost from casetotalsummarize ctsm,casemessage cm where ctsm.policycode = cm.policycode and
ctsm.casenumber = cm.casenumber and ctsm.grade_hs='C' and (ctsm.handledate between date'2011-10-12'
and date'2011-11-29') and cm.link='核损') T2

(select (count(cm.policycode) cost ......) T1
这个T1.cost和T2.cost都是数值,但在第一行,却使用了ltrim函数,不对了:ltrim(T1.cost)+'/'+ltrim(T2.cost)
1、cost是数值不能使用ltrim函数;
2、数值相加可以,但不可以在数值中间加'/'字符
参考技术A 无效数字产生的原因是由于 将非数值型转化为数值型包错 才会报出 ora-01722:无效数字
的错误,请仔细查询你该SQL 中的字段值,就能找出哪有问题了追问

麻烦您具体说实在点好么 求您了 我实在是看不个所以然出来

参考技术B ltrim(T1.cost) + '/' + ltrim(T2.cost) cont

oralce中连接字符串用 ltrim(T1.cost) || '/' || ltrim(T2.cost) cont
参考技术C 这么多字才5点财富,你可以等待了

以上是关于求高手,oracle一直报这个错误:ORA--00923 无法在应该出现from关键字的位置上找到它,如何解决的主要内容,如果未能解决你的问题,请参考以下文章

C语言分治法求最近对问题 运行一直报错 求高手修改

求教:plsql 连接oracle 报TNS: 无法解析指定的连接,且database下拉为空。求高手

oracle带参数的存储过程,一直提示sql无效sql语句。求高手指点

启动hadoop集群的时候jobtracker日志里报这个异常,求高手指导是啥原因导致的,怎么解决

求高手帮忙解决数据库问题,pgsql connection 在PGSQL中,输入select查询语句,执行,报如下错误:

求oracle 数据库高手 围观 此问题: 执行下面代码 报此错误:ora-01722:无效数字