Oracle where子句匹配所有条目

时间:2015-08-11 00:25:29

标签: sql oracle

是否有办法在字段中使用where子句构造参数化查询,该字段匹配字段中的所有条目。例如,我想像

这样的语法
'select brands from cars where brands = param'

如果param = 'Toyota'那么它只返回与丰田匹配的行,但是如果param = *它返回cars表中的所有行。

5 个答案:

答案 0 :(得分:3)

试试这个。它是条件WHERE条款

WHERE brands = NVL(param, brands)

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:2)

通常的解决方法是

select brands from cars where brands LIKE param

如果param ='丰田',它只返回丰田

如果param ='%',则返回所有内容

简单但不一定高效。

答案 3 :(得分:1)

如果你有变量,你可以这样做:

where v_brand is null or v_brand = brand

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

where 1 = 1

答案 4 :(得分: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