作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个问题,也许很简单(对各位大师而言)。
我正在将我的 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/
我是一名优秀的程序员,十分优秀!