匹配所有条目的Oracle where子句

  • 本文关键字:Oracle where 子句 sql oracle
  • 更新时间 :
  • 英文 :


有没有一种方法可以在与字段中所有条目匹配的字段上使用where子句构造参数化查询。例如,我想象的语法像

'select brands from cars where brands = param'

使得如果param = 'Toyota'则其仅返回与Toyota匹配的行,但如果param = *则其返回来自cars表的所有行。

试试这个。这是一个条件WHERE子句

WHERE brands = NVL(param, brands)

表示如果参数为NULL,则使用brands = brands

通常的解决方法是

select brands from cars where brands LIKE param

如果param="Toyota",则只返回Toyota

如果param="%",则返回所有

简单但不一定是表演性的。

select * from cars where brands like '%'||parameter||'%'

您可以使用distinct从您的表中获取所有品牌。

如果您有一个变量,您可以执行:

where v_brand is null or v_brand = brand

如果你只想要一个匹配所有内容的表达式:

where 1 = 1

无论brand如何,返回所有行的正确方法是从过滤器中删除brands = param,而不是在其上使用通配符或函数…

在您的案例中,通常会将where 1=1添加到子句中,并在以下模式中使用:

如果param具有值

select brands from cars where 1=1 and brands = param

否则,您只需删除and brands = param部分:

select brands from cars where 1=1

最新更新