gpt4 book ai didi

mysql - 存储过程中的动态 MySQL Where 子句

转载 作者:可可西里 更新时间:2023-11-01 06:48:00 24 4
gpt4 key购买 nike

我有一个问题,也许很简单(对各位大师而言)。

我正在将我的 SQL 分页类从 C# 转换为 MySQL 存储过程。在我的 C# 自制对象中,查询是根据条件动态构建的。示例:

if(keywords is not null)
{
whereClause += "WHERE description LIKE '%keywords%'"
}
if(price is not null)
{
whereClause += "AND price = '%price%'"
}

....

string query = "SELECT col1, col2 FROM tblThreads " + whereClause

现在,我的问题是:如何在 MySQL 中做一个类似于此的动态 where 子句?或者更确切地说,如果他们没有为这些参数输入任何内容,我将如何告诉存储过程中的 MySQL 跳过这些参数?即:

SELECT col1, col2 FROM tblThreads

如果这些参数为空,这样的事情会起作用吗?

SELECT col1, col2 FROM tblThreads WHERE (IS NULL @keywords OR description like '%@keywords%'

??

谢谢你们。

最佳答案

您可以使用CASE 语句来检查@keywords 的值,例如。

SELECT  col1, col2 
FROM tblThreads
WHERE description LIKE CASE WHEN @keywords IS NULL
THEN description
ELSE CONCAT('%', @keywords, '%')
END
AND
price LIKE CASE WHEN @price IS NULL
THEN price
ELSE CONCAT('%', @price, '%')
END

关于mysql - 存储过程中的动态 MySQL Where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14983398/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com