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 True
和 WHERE 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
我正在实现一个搜索屏幕,并且会出现一些可选参数。在 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 True
和 WHERE 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