5.1字符函数

length()

描述:获取参数值的字节个数
例:

  1. length('HelloWorld');

运行结果:

  1. 10

concat()

描述:拼接字符
例:

  1. concat('Hello', '___', 'World');

运行结果:

  1. Hello___World

upper()

描述:将字符转换为大写
例:

  1. upper('Hello");

运行结果:

  1. HELLO

lower()

描述:将字符转换为小写
例:

  1. lower('HELLO');

运行结果:

  1. hello

subString()/subStr()

描述:截取子字符串
例1:

  1. # 2个参数:截取制定字符串从第n(包含第n个)个开始,一直到结尾的子字符串
  2. subString('abcdefghijklmn', 7);

运行结果:

  1. ghijklmn

例2:

  1. # 3个参数,截取指定字符串从第n个开始,m长度的子字符串
  2. subStr('abcdefghijklmn', 1, 3);

运行结果:

  1. abc

instr

描述:返回字串在字符串中第一次出现的索引位置,如果不存在则返回0
例:

  1. instr('我们都会HelloWorld', 'World');

运行结果:

  1. 10

lpad

描述:用指定的字符实现左填充指定长度,如果指定长度小于字符长度,从右边截断
例:

  1. lpad('Hello', 10, '?');

运行结果:

  1. ?????Hello

rpad

描述:用指定的字符实现右填充指定长度,如果指定长度小于字符长度,从左边截断
例:

  1. rpad('Hello', 10, '?');

运行结果:

  1. Hello?????

replace

描述:替换字符串指定字符为另一字符
例:

  1. replace('你是电你是光你是唯一的神话', '你', '我');

运行结果:

  1. 我是电我是光我是唯一的神话

trim

描述:去掉字符串首尾空格或首尾其他指定字符
例:

  1. trim(' abc. ');
  2. trim('x' from 'xxxabcxxx');

运行结果:

  1. abc
  2. abc

5.2数学函数

round()

描述:四舍五入

  1. # 四舍五入
  2. select round(-1.55);
  3. # 小数点后保留多少位再四舍五入
  4. select round(1.567, 2);

ceil

描述:向上取整,返回大于等于该参数的最小整数

  1. select ceil(1.19);
  2. select ceil(-1.19);

floor()

描述:向下取整,返回小于等于该参数的最大整数

  1. SELECT FLOOR(9.99);
  2. SELECT FLOOR(-9.99);

truncate()

描述:截断,小数点后保留几位

  1. select truncate(1.65, 1);

mod()

描述:取模/取余

  1. SELECT MOD(10, 3);
  2. SELECT MOD(-10, -3);
  3. SELECT MOD(10, -3);

注意:mod结算的公式为 mod(x, y) = x - x / y * y
简单点就是说,第一个参数是正数结果就是正数,第一个参数是负数结果就是负数
运算时,先按全正数运算,再加负号就可以了

5.3日期函数

now()

描述:返回当前系统日期和时间

  1. select now();

curdate()

描述:返回当前系统时间,不包含时间

  1. select curdate();

curtime()

描述:返回当前系统时间,不包含日期

  1. select curtime();

datediff

描述:计算两个日期之间间隔的天数

  1. select datediff(日期1, 日期2);

获取指定的时间部分

  1. SELECT
  2. YEAR(NOW()) AS "年",
  3. MONTH(NOW()) AS "月",
  4. HOUR(NOW()) AS "时",
  5. MINUTE(NOW()) AS "分钟",
  6. SECOND(NOW()) AS "秒";

str_to_date()

描述:将日期格式的字符转换成指定格式的日期

  1. SELECT STR_TO_DATE('1998-1-21', '%Y-%c-%d');

date_format()

描述:将日期转换成字符

  1. SELECT DATE_FORMAT(NOW(), '%y年%m月%d日');

日期格式符

序号 格式符 功能
1 %Y 四位的年份
2 %y 2位的年份
3 %m 月份(01, 02, … , 12)
4 %c 月份(1, 2, … , 12)
5 %d 日(01,02)
6 %H 小时(24)
7 %h 小时(12)
8 %i 分钟(00, 01, … , 59)
9 %s 秒(00, 01, … , 59)

5.4流程控制函数

5.4.1 分支结构

if函数

双分支

  1. if(表达式1, 表达式2, 表达式3)

执行顺序:如果表达式1成立,则if函数返回表达式2的值,否则返回表达式3的值
应用场景:任何地方

多重分支

  1. if 条件1 then 语句1
  2. elseif 条件2 then 语句2
  3. ……
  4. else 语句n
  5. end if;

应用场景:只能在begin end中使用
注意:最后的else也可以省略,如果不需要的话

case函数

类似于switch的结构
作用:一般用于实现等值判断

  1. case 变量 表达式 字段
  2. when 要判断的值 then 返回的值1
  3. when 要判断的值 then 返回的值2
  4. ……
  5. else 要返回的值n
  6. end

5.4.2 循环结构

while

作用:先判断后执行
应用场景:begin end中

  1. [标签:]
  2. while 循环条件 do
  3. 循环体:
  4. end while
  5. [标签];

loop

作用:没有条件的死循环
应用场景:begin end中

  1. [标签:]
  2. loop
  3. 循环体
  4. end loop
  5. [标签];

repeat

作用:先执行后判断
应用场景:begin end中

  1. [标签:]
  2. repeat
  3. 循环体
  4. until 结束循环的条件
  5. end repeat
  6. [标签];

控制循环语句

iterate
作用:类似于continue

  1. iterate 标签名;

leave
作用:类似于break

  1. leave 标签名;