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);