【问题标题】:Pervasive v11: Remove optional paramter in where clausePervasive v11:删除 where 子句中的可选参数
【发布时间】:2017-09-01 19:02:12
【问题描述】:

我正在使用 Pervasive V11。在以下查询中,我有一个名为 ModelYear 的可选参数。当它作为 NULL 传递时,我想将它排除在 WHERE 子句中运行。

SELECT  Year,Make,Style,Model,Color1,VIN
                       FROM
                       Vehicles
                      WHERE

                         (VIN ='{VIN}') AND (xyz = '{xyz}') AND 
                       (COALESCE(NULLIF('{ModelYear}', ''), Year))

【问题讨论】:

  • 你试过什么?你看到了什么行为?你有错误吗?我无法让 COALESCE 在 V11 的 WHERE 子句中工作。
  • 更像是语法错误

标签: pervasive actian


【解决方案1】:

你可以试试:

SELECT  
   Year,Make,Style,Model,Color1,VIN
FROM
   Vehicles
WHERE
   (VIN ='{VIN}') AND 
   (xyz = '{xyz}') AND 
   (ISNULL('{ModelYear}','') = Year END)

来自docs

ISNULL (exp, value):将 NULL 替换为 value 指定的值。 Exp 是检查 NULL 的表达式。价值就是价值 如果 exp 为 NULL,则返回。如果不为 NULL,则返回 Exp。数据 值的类型必须与exp的数据类型兼容。

NULLIF (exp1, exp2):如果两个表达式不等价,NULLIF 返回 exp1。如果表达式等价,则返回 NULLIF 一个 NULL 值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    • 2013-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多