简体   繁体   English

如何在 mySQL 的 Case 表达式内放置 IF 语句?

[英]How to place an IF statement inside of an Case expression in mySQL?

I am working on a homework question and I have to place an IF statement inside of a case statement.我正在处理一个家庭作业问题,我必须在案例语句中放置一个 IF 语句。 I can't find anything online that explains how to do this.我在网上找不到任何解释如何执行此操作的内容。 I think I have the wrong syntax.我想我有错误的语法。 The code goes as followed:代码如下:

/*Set DB context and drop the procedure if it exists (2 lines)*/
use ap;
drop procedure if exists ch13_5;


/*Delimiter statement (1 line)*/
delimiter //

/*Create procedure statement (1 line).*/
create procedure ch13_5()

/*Begin statement (1 line)*/
begin

/*Declare 3 internal variables; 2 varchars's and 1 int (3 lines)*/
declare v_state varchar(2);
declare v_city varchar(30);
declare inv_id int;



/*Set the int variable as directed in the assignment (1 line)*/
set inv_id = 15;

/*Set the internal varchar variables using a select column_value, column_value into */
/*the appropriate variables using the where condition of invoice_id = int variable (5 lines) */
select vendor_state, vendor_city into v_state, v_city
from invoices where invoice_id = inv_id;





/*BEGIN CASE and IF-ELSEIF-ELSE CONDITIONAL*/
/*Start a CASE statement using the state variable- when it's AZ, display "Arizona vendor' (3 lines) */
case
when v_state ='AZ' then 
select 'Arizona vendor' AS v_state;
when v_state='CA' then if
v_city = 'Fresno' then select 'Fresno California vendor' as v_city;
elseif v_city = 'Oxnard' then select 'LA Metro California vendor' as v_city;
else select 'California vendor' as v_city;
SELECT 'California vendor' as v_state;
else 
select 'National vendor' AS v_state;
end case;
end if;

Thank you in advance for any help:)预先感谢您的任何帮助:)

END IF needs to be inside the WHEN block that contains the IF statement. END IF需要位于包含IF语句的WHEN块内。

CASE
WHEN v_state = 'AZ'
THEN SELECT 'Arizona vendor' AS v_state;
WHEN v_state = 'CA'
THEN IF v_city = 'Fresno'
     THEN SELECT 'Fresno California vendor' AS v_city;
     ELSEIF v_city = 'Oxnard'
     THEN SELECT 'LA Metro Califonia vendor' AS v_city;
     ELSE SELECT 'California vendor' AS v_city;
     END IF;
ELSE SELECT 'National vendor' AS v_state;
END CASE;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM