Spanner 中的动态查询

Dynamic Query in Spanner

我正在实现一个搜索屏幕,并且会出现一些可选参数。在 oracle 中,我曾经为 Spanner 不支持的可选参数提供 true 或 1=1 条件。 我们如何在 Spanner 中实现相同的目标 SQL?

Sample Query 
select mark.* from  
abc mark join xyz mchhier on  mark.X=mchhier.X where 
--Mandatory
mark.X=123 and 
--Below Params are Optional
mchhier.G in (null) and mchhier.C (null) and mchhier.D in (null) 

Cloud Spanner 还支持 WHERE TrueWHERE 1=1 等条件,因此应该可以使用与 Oracle 中相同的策略。

以下是一个有效的 Spanner 查询示例:

select mark.*
from abc mark
join xyz mchhier on mark.X=mchhier.X
where 
--Mandatory
mark.X=123
--@SomeParam could be NULL
AND CASE
  -- If param is null, the condition will always be true
  WHEN @SomeParam IS NULL THEN TRUE
  ELSE mchhier.G in (@SomeParam)
END