gpt4 book ai didi

mysql - 如何在 MYSQL 中将字符串作为 WHERE 子句传递

转载 作者:行者123 更新时间:2023-11-29 14:30:02 24 4
gpt4 key购买 nike

我创建了以下字符串:

set l_project_name = concat("UPPER(a.project_name) like UPPER ('%",projectName,"%')");
set l_project_type = concat(" OR UPPER(a.project_type) like UPPER('%",projectType,"%')");
set l_project_description = concat(" OR UPPER(a.project_description) like UPPER('%",projectDescription,"%')");

set l_full_search_clause = concat(l_project_name ,l_project_type, l_project_description);

字符串:l_full_search_clause 的结果是:UPPER(a.project_name) 类似于 UPPER('%order%')

我有一个 select 子句,我需要使用我创建的包含此 where 子句的字符串。所以,我有以下内容: 从项目中选择* 其中 l_full_search_clause

但是,当然,MYSQL 按原样读取 l_full_search_clause,而不是作为变量。我如何告诉 MYSQL 条件是一个变量字符串?

这个 sql 位于 MYSQL 存储过程中..所以它只是普通的 sql ..我从 C#、MVC3 调用这个存储过程

最佳答案

试试这个:

SET @query = "SELECT * FROM projects WHERE ";

SET @l_project_name = CONCAT("a.project_name LIKE '%", projectName, "%'");
SET @l_project_type = CONCAT(" OR a.project_type LIKE '%", projectType, "%'");
SET @l_project_description = CONCAT(" OR a.project_description LIKE '%", projectDescription, "%'");

SET @l_full_search_clause = CONCAT(@l_project_name, @l_project_type, @l_project_description);

SET @query = CONCAT(@query, @l_full_search_clause);

PREPARE stmt FROM @query;
EXECUTE stmt;

我相信您必须对变量使用@var 语法。此外,要执行存储在字符串中的查询,您必须使用 PREPAREEXECUTE

并且您不必在字符串上使用UPPER。默认情况下,MySQL 比较字符串时不区分大小写。您可以通过查看字段的排序规则类型来确保这一点。 ci_ 代表“不区分大小写”。

关于mysql - 如何在 MYSQL 中将字符串作为 WHERE 子句传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10176404/

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