Sql 我没有想到这一点。但这会对性能产生怎样的影响?在执行联接时,对每一行执行检查似乎效率很低。至于使用to_CHAR,正如前面的评论中所述,我们最初是这样做的,但是其他开发人员在加入视图时总是忘记将包含在to_CHAR中,这样做的目的是消除代码重复。显然,最好
我没有想到这一点。但这会对性能产生怎样的影响?在执行联接时,对每一行执行检查似乎效率很低。至于使用Sql 我没有想到这一点。但这会对性能产生怎样的影响?在执行联接时,对每一行执行检查似乎效率很低。至于使用to_CHAR,正如前面的评论中所述,我们最初是这样做的,但是其他开发人员在加入视图时总是忘记将包含在to_CHAR中,这样做的目的是消除代码重复。显然,最好,sql,oracle,oracle12c,Sql,Oracle,Oracle12c,我没有想到这一点。但这会对性能产生怎样的影响?在执行联接时,对每一行执行检查似乎效率很低。至于使用to_CHAR,正如前面的评论中所述,我们最初是这样做的,但是其他开发人员在加入视图时总是忘记将包含在to_CHAR中,这样做的目的是消除代码重复。显然,最好的解决方案是重构和修复数据模型,但这是我继承的一个大型数据库,从业务角度来看,重构它是不实际的。 SELECT * FROM ( SELECT AGGPROJ_ID -- this column is a VARCHAR FRO
to_CHAR
,正如前面的评论中所述,我们最初是这样做的,但是其他开发人员在加入视图时总是忘记将包含在to_CHAR
中,这样做的目的是消除代码重复。显然,最好的解决方案是重构和修复数据模型,但这是我继承的一个大型数据库,从业务角度来看,重构它是不实际的。
SELECT *
FROM (
SELECT AGGPROJ_ID -- this column is a VARCHAR
FROM AGG_MATCHES -- this is the table storing the matches
WHERE AGGSRC = 'source_a'
) m
JOIN SOURCE_A a ON a.ID = TO_NUMBER(m.AGGPROJ_ID default null on conversion error);
SELECT *
FROM (
SELECT AGGPROJ_ID -- this column is a VARCHAR
FROM AGG_MATCHES -- this is the table storing the matches
WHERE AGGSRC = 'source_a'
--Prevent optimizer transformations for type safety.
AND ROWNUM >= 1
) m
JOIN SOURCE_A a ON a.ID = TO_NUMBER(m.AGGPROJ_ID);
SELECT a.*
FROM AGG_MATCHES m JOIN
SOURCE_A a
ON a.ID = (CASE WHEN m.AGGSRC = 'source_a' THEN TO_NUMBER(m.AGGPROJ_ID) END);
SELECT a.*
FROM AGG_MATCHES m JOIN
SOURCE_A a
ON TO_CHAR(a.ID) = m.AGGPROJ_ID AND
m.AGGSRC = 'source_a' ;
create view v_agg_matches_a as
select . . .,
(case when regexp_like(AGGPROJ_ID, '^[0-9]+$')
then to_number(AGGPROJ_ID)
end) as AGGPROJ_ID
from agg_matches am
where m.AGGSRC = 'source_a';