gpt4 book ai didi

mysql - 可选的 WHERE 子句根据存储过程中的参数搜索不同的字段

转载 作者:太空宇宙 更新时间:2023-11-03 10:48:32 26 4
gpt4 key购买 nike

Table Example :

CREATE TABLE offices
(`office_id` int,`country` varchar(50),`population` int)
;

INSERT INTO offices
(`office_id`,`country`,`population`)
VALUES
(1,'AU',20000),
(2,'US',1200),
(3,'UK',150000),
(4,'NZ',1200)

;

我在存储过程中使用可选的 where 子句,如下所示:

DELIMITER //
CREATE PROCEDURE GetOfficeByCountry(IN yr_val varchar(50))
BEGIN
SELECT *
FROM offices
WHERE yr_val IS NULL OR country RLIKE yr_val
ASC
END //
DELIMITER ;

我想知道是否有一种方法可以根据参数 yr_whereCASE WHEN 用于不同的 Where Clause。如果为 1,则在 country 字段中查找值,如果为 2,则在 population 字段中查找:

DELIMITER //
CREATE PROCEDURE GetOfficeByCountry(IN yr_where tinyint(1),IN yr_val varchar(50))
BEGIN
SELECT *
FROM offices
WHERE 1 = 1
CASE yr_where
WHEN 1 THEN AND country RLIKE yr_val
WHEN 2 THEN AND population > yr_val
ELSE 1 END
ASC
END //
DELIMITER ;

最佳答案

不,您不能在这样的 where 子句中使用 case。但你也可以这样做

DELIMITER //
CREATE PROCEDURE GetOfficeByCountry(IN yr_where tinyint(1),IN yr_val varchar(50))
BEGIN
SELECT *
FROM offices
WHERE (yr_where = 1 and country RLIKE yr_val)
OR (yr_where = 2 and population > yr_val)
END //
DELIMITER ;

关于mysql - 可选的 WHERE 子句根据存储过程中的参数搜索不同的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27665494/

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