在MySQL中,无法直接使用变量作为SELECT语句的字段列表。但是,你可以使用动态SQL来实现这个需求。以下是如何使用动态SQL来实现你的需求的示例代码:
DELIMITER //
CREATE PROCEDURE recruitment_search(
IN column_list VARCHAR(100),
IN keyword VARCHAR(20)
)
BEGIN
SET @query = CONCAT('SELECT ', column_list, ' FROM `某招聘网站数据` WHERE industryField LIKE ''%', keyword, '%'';');
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END //
DELIMITER ;
在上面的代码中,我们使用CONCAT函数将传入的column_list和keyword与静态SQL语句拼接为一个完整的动态SQL语句。然后,我们使用PREPARE语句来准备动态SQL语句,并使用EXECUTE语句执行它。最后,我们使用DEALLOCATE PREPARE语句释放预处理语句的资源。
注意,由于动态SQL语句可能导致SQL注入等安全问题,请确保在拼接动态SQL语句时进行正确的输入验证和转义。
另外,你在示例代码中有一处拼写错误,将call procedure recruitment_search(@column_list,@keyword)中的@keyword改为@industryField。应该为:
SET @column_list = 'positionName,companySize,industryField,firstType,secondType,thirdType,createTime,salary,workYear,education';
SET @industryField = '%金融%';
CALL recruitment_search(@column_list, @industryField);
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |