PL/SQL“选择”来自类型与外部查询不同的值列表
我有以下表格:
Table1 ( Col1 : varchar2, Col2 : number, Col3 : number)
Table2 ( Col1 : number, Col2 : varchar2, Col3 : varchar2)
我想运行这样的查询:
select distinct Col2 from Table1 where Col1 in
(
select Col1 from Table2
)
Table1.Col1 的类型为 varchar2,而 Table2.Col1 的类型为 number。所以,我需要做一些选角,但似乎没有成功。
问题是任何运行查询的尝试都会返回以下错误:
ORA-01722: invalid number
01722. 00000 - "invalid number"
*Cause:
*Action:
Table1.Col1 包含一些空值。
I have the following tables :
Table1 ( Col1 : varchar2, Col2 : number, Col3 : number)
Table2 ( Col1 : number, Col2 : varchar2, Col3 : varchar2)
I want to run a query like this :
select distinct Col2 from Table1 where Col1 in
(
select Col1 from Table2
)
Table1.Col1 is of type varchar2 while Table2.Col1 is of type number. so, I need to do some casting, it seems but it fails to succeed.
The problem is that any attempts to run the query returns the following error :
ORA-01722: invalid number
01722. 00000 - "invalid number"
*Cause:
*Action:
Table1.Col1 contains some null values.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
类似的东西
应该有效。根据两个表的相对大小,执行
EXISTS
可能会更有效Something like
should work. Depending on the relative size of the two tables, it may be more efficient to do an
EXISTS
instead您的错误 ORA-01722 是因为您尝试将
varchar2
值放入int
列的IN
子句中。您必须确保在
IN
子句中提供 int 值。给出相同的数据类型。Your error ORA-01722 is because you're trying to put
varchar2
values in anIN
clause for anint
column.You've got to ensure that you're supplying int values in that
IN
clause. Give the same datatypes.