带有标志的&quot&quot&quot otarate查询Sybase到Oracle迁移到Oracle。

发布于 2025-01-21 07:25:24 字数 1861 浏览 1 评论 0原文

大家好,我在Sybase中有此征询这个标志 *=,我在Oracle 左外连接中使用,但如果正确,我不正确。

Sybase中的查询:

select
  right(( "00" +convert(varchar(2), cta_consol.cod_correo)) , 2) +
  right(("000000000" + convert(varchar(11), cta_consol.num_cta_cte)), 9) 
from
  t_cuenta_consolidada cta_consol,
  t_cuenta_corriente   ctacte ,
  t_empresa            empresa,
  t_comuna             comuna,
  t_comuna             comuna_CtaCte,
  t_ciudad             ciudad,
  t_ciudad             ciudad_CtaCte ,
  t_cta_cte_param         param
where
  empresa.ide              = cta_consol.ide_cliente  and
  empresa.cod_comuna       = comuna.codigo           and
  comuna.cod_ciudad        = ciudad.codigo           and
  ctacte.cod_comuna        = comuna_CtaCte.codigo    and
  comuna_CtaCte.cod_ciudad = ciudad_CtaCte.codigo    and
  cta_consol.num_cta_cte   = ctacte.num_cta_cte      and
  cta_consol.num_cta_cte   *= param.num_cta_cte

cta_consol.num_cta_cte *= param.num_cta_cte

查询迁移到oracle:

 select 
  SUBSTR(('00' || CAST(cta_consol.cod_correo AS VARCHAR2(2))),-2) ||
  SUBSTR(('000000000' || CAST(cta_consol.num_cta_cte AS VARCHAR2(11))),-9) 
from
  t_cuenta_consolidada cta_consol 
LEFT OUTER JOIN t_cta_cte_param param ON cta_consol.num_cta_cte = param.num_cta_cte, 
  t_cuenta_corriente   ctacte, 
  t_empresa empresa, 
  t_comuna comuna, 
  t_ciudad  ciudad
where
  empresa.ide = cta_consol.ide_cliente AND 
  empresa.cod_comuna  = comuna.codigo AND 
  comuna.cod_ciudad  = ciudad.codigo AND 
  ctacte.cod_comuna  = comuna.codigo AND 
  comuna.cod_ciudad = ciudad.codigo AND 
  cta_consol.num_cta_cte  = ctacte.num_cta_cte

左外部加入t_cta_cte_param param on cta_consol.num_cta_cte = param.num_cta_cte,

我已经比较了每个查询的注册量,并且它不是相同的

Hello guys i have this query in sybase with this sign *=, I use in oracle LEFT OUTER JOIN but i dont if right.

Query in sybase:

select
  right(( "00" +convert(varchar(2), cta_consol.cod_correo)) , 2) +
  right(("000000000" + convert(varchar(11), cta_consol.num_cta_cte)), 9) 
from
  t_cuenta_consolidada cta_consol,
  t_cuenta_corriente   ctacte ,
  t_empresa            empresa,
  t_comuna             comuna,
  t_comuna             comuna_CtaCte,
  t_ciudad             ciudad,
  t_ciudad             ciudad_CtaCte ,
  t_cta_cte_param         param
where
  empresa.ide              = cta_consol.ide_cliente  and
  empresa.cod_comuna       = comuna.codigo           and
  comuna.cod_ciudad        = ciudad.codigo           and
  ctacte.cod_comuna        = comuna_CtaCte.codigo    and
  comuna_CtaCte.cod_ciudad = ciudad_CtaCte.codigo    and
  cta_consol.num_cta_cte   = ctacte.num_cta_cte      and
  cta_consol.num_cta_cte   *= param.num_cta_cte

cta_consol.num_cta_cte *= param.num_cta_cte

query migrate to oracle:

 select 
  SUBSTR(('00' || CAST(cta_consol.cod_correo AS VARCHAR2(2))),-2) ||
  SUBSTR(('000000000' || CAST(cta_consol.num_cta_cte AS VARCHAR2(11))),-9) 
from
  t_cuenta_consolidada cta_consol 
LEFT OUTER JOIN t_cta_cte_param param ON cta_consol.num_cta_cte = param.num_cta_cte, 
  t_cuenta_corriente   ctacte, 
  t_empresa empresa, 
  t_comuna comuna, 
  t_ciudad  ciudad
where
  empresa.ide = cta_consol.ide_cliente AND 
  empresa.cod_comuna  = comuna.codigo AND 
  comuna.cod_ciudad  = ciudad.codigo AND 
  ctacte.cod_comuna  = comuna.codigo AND 
  comuna.cod_ciudad = ciudad.codigo AND 
  cta_consol.num_cta_cte  = ctacte.num_cta_cte

LEFT OUTER JOIN t_cta_cte_param param ON cta_consol.num_cta_cte = param.num_cta_cte,

I have compared the amount of registration of each query, and it is not the same

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

別甾虛僞 2025-01-28 07:25:24

可以将现代的ANSI加入Syntax与旧的所有人结合Oracle加入语法,但订单很重要。

做ANSI

select 
    SUBSTR(('00' || CAST(cta_consol.cod_correo AS VARCHAR2(2))),-2) ||
    SUBSTR(('000000000' || CAST(cta_consol.num_cta_cte AS VARCHAR2(11))),-9) 
from
    t_cuenta_consolidada cta_consol 
LEFT JOIN t_cta_cte_param param ON cta_consol.num_cta_cte = param.num_cta_cte
JOIN t_cuenta_corriente ctacte ON cta_consol.num_cta_cte  = ctacte.num_cta_cte
JOIN t_comuna comuna ON ctacte.cod_comuna  = comuna.codigo
JOIN t_empresa empresa ON empresa.ide = cta_consol.ide_cliente AND empresa.cod_comuna  = comuna.codigo 
JOIN t_ciudad  ciudad ON comuna.cod_ciudad  = ciudad.codigo
WHERE ...

或旧的Oracle样式通常更容易,令人困惑:

select 
    SUBSTR(('00' || CAST(cta_consol.cod_correo AS VARCHAR2(2))),-2) ||
    SUBSTR(('000000000' || CAST(cta_consol.num_cta_cte AS VARCHAR2(11))),-9) 
from
t_cuenta_consolidada cta_consol,
t_cta_cte_param param, 
t_cuenta_corriente   ctacte, 
t_empresa empresa, 
t_comuna comuna, 
t_ciudad  ciudad
where
empresa.ide = cta_consol.ide_cliente AND 
empresa.cod_comuna  = comuna.codigo AND 
comuna.cod_ciudad  = ciudad.codigo AND 
ctacte.cod_comuna  = comuna.codigo AND 
comuna.cod_ciudad = ciudad.codigo AND 
cta_consol.num_cta_cte  = ctacte.num_cta_cte AND
cta_consol.num_cta_cte = param.num_cta_cte (+)

You can mix modern ANSI join syntax with the old proprietary Oracle join syntax, but the order is important.

It's usually easier and less confusing to either do ANSI:

select 
    SUBSTR(('00' || CAST(cta_consol.cod_correo AS VARCHAR2(2))),-2) ||
    SUBSTR(('000000000' || CAST(cta_consol.num_cta_cte AS VARCHAR2(11))),-9) 
from
    t_cuenta_consolidada cta_consol 
LEFT JOIN t_cta_cte_param param ON cta_consol.num_cta_cte = param.num_cta_cte
JOIN t_cuenta_corriente ctacte ON cta_consol.num_cta_cte  = ctacte.num_cta_cte
JOIN t_comuna comuna ON ctacte.cod_comuna  = comuna.codigo
JOIN t_empresa empresa ON empresa.ide = cta_consol.ide_cliente AND empresa.cod_comuna  = comuna.codigo 
JOIN t_ciudad  ciudad ON comuna.cod_ciudad  = ciudad.codigo
WHERE ...

Or old Oracle style:

select 
    SUBSTR(('00' || CAST(cta_consol.cod_correo AS VARCHAR2(2))),-2) ||
    SUBSTR(('000000000' || CAST(cta_consol.num_cta_cte AS VARCHAR2(11))),-9) 
from
t_cuenta_consolidada cta_consol,
t_cta_cte_param param, 
t_cuenta_corriente   ctacte, 
t_empresa empresa, 
t_comuna comuna, 
t_ciudad  ciudad
where
empresa.ide = cta_consol.ide_cliente AND 
empresa.cod_comuna  = comuna.codigo AND 
comuna.cod_ciudad  = ciudad.codigo AND 
ctacte.cod_comuna  = comuna.codigo AND 
comuna.cod_ciudad = ciudad.codigo AND 
cta_consol.num_cta_cte  = ctacte.num_cta_cte AND
cta_consol.num_cta_cte = param.num_cta_cte (+)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文