组合连接查询表1的varchar-column-with-int-column的表2


SELECT *
FROM SD_TRAVEL_HISTORY a,
TRAVEL_CORRECTION_ORDER_LI b
where a.transaction_ref = TO_NUMBER(b.travel_transaction_id)
;

transaction_ref—数字列

travel_transaction_id—varchar

上面的查询需要帮助是无效的

在该查询中无效是什么?我认为还可以(或多或少)。任何错误?如果有,是哪些?为什么你认为我们应该猜测出了什么问题?


无论如何,这是我的想法:如果你在Oracle上,你得到了ORA-01722(无效数字)错误,因为你的noble意图匹配数据类型失败,因为数据库无法"转换";将b.travel_transaction_id转换为有效的数值。例如:

SQL> select to_number('12a') from dual;
select to_number('12a') from dual
*
ERROR at line 1:
ORA-01722: invalid number

那么,该怎么办呢?反之亦然,将number转换为字符串!

select *
from sd_travel_history a,
travel_correction_order_li b
where to_char(a.transaction_ref) = b.travel_transaction_id);

或者,如注释中建议的那样,显式地将表连接为

select *
from sd_travel_history a join travel_correction_order_li b
on to_char(a.transaction_ref) = b.travel_transaction_id);

最新更新