WHERE子句SQL的实例

WHERE子句SQL的实例,sql,oracle-sqldeveloper,Sql,Oracle Sqldeveloper,我对我的SQL查询进行了一定的验证 WHERE USER_ACTIVE = 'Y' 但我希望此验证仅在我的标志设置为TRUE时显示 类似地,当标志设置为true时,检查user\u active列。 如果标志为false,则不进行验证即可继续 在下面尝试过,但我认为这是不可能的 WHERE CASE WHEN FLAG = 'TRUE' then USER_ACTIVE = 'Y' else ' ' END 有记录吗 谢谢你 逻辑是这样的: WHERE USER_ACTIVE = 'Y' O

我对我的SQL查询进行了一定的验证

WHERE USER_ACTIVE = 'Y'
但我希望此验证仅在我的标志设置为TRUE时显示

类似地,当标志设置为true时,检查user\u active列。 如果标志为false,则不进行验证即可继续

在下面尝试过,但我认为这是不可能的

WHERE CASE WHEN FLAG = 'TRUE' then USER_ACTIVE = 'Y' else ' ' END
有记录吗


谢谢你

逻辑是这样的:

WHERE USER_ACTIVE = 'Y' OR @FLAG <> 'TRUE'
WHERE (CASE WHEN FLAG = 'TRUE' then USER_ACTIVE else ' ' END) = 'Y'
其中USER_ACTIVE='Y'或@FLAG'TRUE'

您还可以使用WHERE的CASE。需要指出的是,CASE语句只根据条件赋值。因此,您需要在分配完成后进行比较。试着这样做:

WHERE USER_ACTIVE = 'Y' OR @FLAG <> 'TRUE'
WHERE (CASE WHEN FLAG = 'TRUE' then USER_ACTIVE else ' ' END) = 'Y'

嗨@gordon,如果我的旗帜也需要验证怎么办?就像FLAG_VALUE(column)必须是'TRUE'和FLAG_NAME(另一列)必须是'Customer A'Gordon一样,我从来没有见过在Oracle中使用@。你能详细说明一下吗?它只是一个占位符,用来区分作为变量的标志和数据中的列。如果我的标志也需要验证怎么办?如FLAG_值(列)需要为“TRUE”,FLAG_名称(另一列)需要为“Customer”,您可以在案例陈述中添加任何此类条件。据我所知,您可以这样做(当FLAG_值(列)=“TRUE”和FLAG_值(另一列)=“Customer A”然后USER_ACTIVE else”END)=“Y”。