如何仅使用SQL实现Dynamic WHERE-Clause? (我不能使用任何编程语言字符串concatentaion)

问题描述 投票:1回答:1

我正在使用MySql,我不是很喜欢SQL,我对查询参数有以下问题:

我有一个查询,它有一个强制参数和一组可选参数。

目前我以这种方式实现了这种情况(但在我看来错了):

WHERE Localization.id = 2

AND(
    EnutriMessageDetails.crop_id = 2
    OR
    EnutriMessageDetails.process_phase_id = 1
    OR
    EnutriMessageDetails.process_phase_action_id = 1
    OR
    EnutriMessageDetails.user_type_id = 1
    OR
    EnutriMessageDetails.urgency_id = 1
    OR
    EnutriMessageDetails.provided_by_id = 1
    OR
    EnutriMessageDetails.cleared_by_id = 1
    )

其中Localization.id是单个必需参数,AND中的所有参数(以及与OR运算符相互连接)是可选参数。

好的问题是,据我所知,也许,我必须使用类似动态WHERE-Clause的东西,做一个例子:

如果只指定了这些参数(Localization.id,EnutriMessageDetails.crop_id,EnutriMessageDetails.crop_id),则会创建以下WHERE子句:

WHERE 
    Localization.id = 2
AND
    EnutriMessageDetails.crop_id = 2
AND
    EnutriMessageDetails.process_phase_id = 1

等等。

我知道使用字符串连接的编程语言很简单,但在这种特定情况下我不能这样做,因为我的查询直接运行到一个采用SQL并使用这个SQL创建XML的工具。我不可能使用字符串连接动态构建WHERE子句进行任何类型的字符串连接。

那么,有一种方法只使用SQL吗?

mysql sql database where-clause rdbms
1个回答
0
投票

我已经在mssql中使用我的Query创建了一个字符串,之后你可以执行这个字符串而不是查询。我对这种方法没有任何问题。

EXEC ( 'SELECT * FROM mytable');

Go;

您可以使用String变量或任何您喜欢的字符串组合。 https://msdn.microsoft.com/de-de/library/ms188332(v=sql.120).aspx

似乎mysql有相同的.....``

© www.soinside.com 2019 - 2024. All rights reserved.