gpt4 book ai didi

mysql - SQL - 如果这不是真的,我可以做其他事情吗?

转载 作者:行者123 更新时间:2023-11-29 17:43:43 25 4
gpt4 key购买 nike

我可以在 sql 上执行 if 操作,例如 if :P_Prestay is true 执行此 aprt,否则执行其他操作。这是我尝试过的,但有语法错误,我不知道该怎么做

AND R.RES_ESTRES = 'CM'
AND R.RES_SISCRE IN ('MPH','HPH')
**((AND BOOKINGENGINECODE = :P_BOOKINGENGINECODE
AND :P_PRESTAY like 'true')
(AND TRUNC(R.RES_FECINI) = TRUNC(SYSDATE)+2
and :P_POSTSTAY like 'true'
AND TRUNC(R.RES_FECFIN) = TRUNC(SYSDATE)-1))**

对不起我的英语。

最佳答案

您需要在括号外添加AND:

AND R.RES_ESTRES = 'CM'
AND R.RES_SISCRE IN ('MPH','HPH')
AND ( (
:P_PRESTAY = 'true'
AND BOOKINGENGINECODE = :P_BOOKINGENGINECODE
)
OR (
( :P_PRESTAY <> 'true' OR :P_PRESTAY IS NULL ) -- This will only be true if
-- the previous condition is not
-- true.
AND :P_POSTSTAY = 'true'
AND R.RES_FECINI >= TRUNC( SYSDATE ) + 2
AND R.RES_FECINI < TRUNC( SYSDATE ) + 3
AND R.RES_FECFIN >= TRUNC( SYSDATE ) - 1
AND R.RES_FECFIN < TRUNC( SYSDATE )
)
)

此外,如果您使用 TRUNC( datevalue ) ,则 Oracle 无法在列上使用索引,并且需要基于函数的索引,因此指定日期值的范围通常会更有效不比较截断的日期。

关于mysql - SQL - 如果这不是真的,我可以做其他事情吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49897642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com