gpt4 book ai didi

mysql - 使用存储过程从mysql中的表中选择所有值

转载 作者:搜寻专家 更新时间:2023-10-30 22:33:39 25 4
gpt4 key购买 nike

我有一个名为 Contacts 的表,其中包含一个名为 person_id 的字段,我已将其连接到 Java 应用程序。

如果在应用程序中没有为 person_id 指定值,我想使用存储过程从联系人表中选择所有内容。

我要执行的操作是这样的:

Select * from Contacts where (person_id like "%")

为此我编写了如下所示的存储过程:

Delimiter $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `selectTest2`(In p_id int(11))
BEGIN
if p_id = null then
set p_id = "%";
end if;
select * from Contacts where (person_id like p_id);
END $$
Delimiter ;

但是,当我使用以下命令在我的 sql 中运行此过程时

call selectTest2(null)

返回的表格是空白的。如何让它显示表格中的所有值?

参数 p_id 从应用程序的文本框中获取其值。如果用户输入了一个 ID,我希望程序只显示该特定记录,否则我希望它显示所有记录。

我做错了什么,我该如何改正?我知道 p_id 是一个 int 但是我对 varchar 类型的其他字段尝试了同样的事情并且该表未能返回任何值。

最佳答案

尝试在 where 子句 中使用 case 语句,如下所示

WHERE CASE WHEN p_id IS NOT NULL THEN person_id = p_id ELSE TRUE END

希望这能解决你的问题

关于mysql - 使用存储过程从mysql中的表中选择所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40500518/

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