我的查询遇到此错误消息,无法解决。谁能看看我的查询并分享一些见解?非常感谢
Oracle数据库
SELECT BB_BB60.USERS.FIRSTNAME, BB_BB60.USERS.LASTNAME,
BB_BB60.USERS.STUDENT_ID AS IDNUMBER, BB_BB60.USERS.USER_ID AS USERNAME,
REPLACE(CRSADMIN.OCCURRENCE.CODE, '/','_') AS DESCRIPTION,
'Moodle_2019' AS PASSWORD,
SUBSTR(BB_BB60.COURSE_MAIN.COURSE_ID, 0, 7) AS DEPARTMENT
FROM (CRSADMIN.OCCURRENCE
INNER JOIN CRSADMIN.REQ_OCC ON CRSADMIN.OCCURRENCE.PK = CRSADMIN.REQ_OCC.OCC_PK1)
INNER JOIN ((BB_BB60.COURSE_USERS INNER JOIN BB_BB60.COURSE_MAIN ON BB_BB60.COURSE_USERS.CRSMAIN_PK1 = BB_BB60.COURSE_MAIN.PK1)
INNER JOIN BB_BB60.USERS ON BB_BB60.COURSE_USERS.USERS_PK1 = BB_BB60.USERS.PK1) ON CRSADMIN.REQ_OCC.REQ_PK1 = BB_BB60.COURSE_MAIN.PK1
WHERE (((BB_BB60.COURSE_MAIN.COURSE_ID) = 'PARA602_2019_02'));
答案 0 :(得分:0)
可能的问题在于您的数据模型。在至少一个JOIN准则中,您要将数字列连接到varchar2列,这导致隐式转换为数字。但是,您的varchar2列包含不是数字的字符串,因此,连接会发送ORA-01722。
在不知道您的表结构的情况下,我们无法识别问题列,因此您需要自己解决问题。
一种解决方案是将数字列转换为字符串,例如
http://www.example.com/some/path/to/a/file.xml?foo=bar#test
这可能会影响性能(优化程序将不会使用 on t1.vcol_pk = to_char(t2.ncol_pk)
上的索引)。
一个更好的解决方案是修复数据模型,这样您就不需要比较字符串和数字,也无需清理数据。