是否有办法在字段中使用where子句构造参数化查询,该字段匹配字段中的所有条目。例如,我想像
这样的语法'select brands from cars where brands = param'
如果param = 'Toyota'
那么它只返回与丰田匹配的行,但是如果param = *
它返回cars
表中的所有行。
答案 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