未说明都是在begin-end中
CASE
-
基本语法
-
a为值,b为值,c为值
CASE a
WHEN b1 THEN c1
WHEN b2 THEN c2
-- ELSE可以省略
ELSE c3
END ;
CASE a
WHEN b1 THEN c1;
WHEN b2 THEN c2;
ELSE c3;
END CASE;
CASE
WHEN b1 THEN c1
WHEN b2 THEN c2
ELSE c3
END ;
IF
-- 类似三目运算符 true返回值1,false返回值2
IF(条件,值1,值2)
IF 条件1 THEN 语句1;
ELSEIF 条件2 THEN 语句2;
-- ELSE可以省略
ELSE 语句3;
END IF;
CREATE FUNCTION degree(g INT) RETURNS CHAR(3)
BEGIN
IF g=0 THEN RETURN '旷考';
ELSEIF g<60 THEN RETURN '不及格';
ELSE RETURN '及格';
END IF;
END?
SQL和JAVA循环语句对应关系
JAVA | while | do while | 死循环 | break | continue |
---|---|---|---|---|---|
SQL | while | repeat | loop | leave | iterate |
- leave iterate后面加标签使用
WHILE
-- 标签可以省略
标签:WHILE 条件 DO
循环语句;
end WHILE 标签;
-- 一个计算数字位数的函数
CREATE FUNCTION ct(g INT) RETURNS INT
BEGIN
DECLARE _count INT DEFAULT 0;
divi: WHILE g<>0 DO
SET g = g/10;
SET _count = _count + 1;
END WHILE divi;
RETURN _count;
END?
REPEAT
CREATE FUNCTION gugugu(str VARCHAR(10)) RETURNS VARCHAR(10)
BEGIN
REPEAT
SET str = CONCAT(str,'咕');
UNTIL CHAR_LENGTH(str)=5
END REPEAT;
RETURN str;
END?
LOOP
CREATE FUNCTION gu(str VARCHAR(10)) RETURNS VARCHAR(10)
BEGIN
lp:LOOP
SET str = CONCAT(str,'咕');
IF CHAR_LENGTH(str)>7 THEN LEAVE lp;
ELSEIF CHAR_LENGTH(str)>5 THEN ITERATE lp;
ELSE SET str = CONCAT(str,'白面鸮');
END IF;
END LOOP lp;
RETURN str;
END?