目录
时间函数:
/**
* now函数:当前时间
* 语法:now()
*/
INSERT INTO table_name (create_time) VALUES (now());
/**
* DATE_FORMAT函数:日期->字符串
* 语法:DATE_FORMAT(date, format)
*/
SELECT DATE_FORMAT(table_column, "%Y-%m-%d %T") FROM table_name;
条件函数:
/**
* IF函数,语法:IF(condition, true_result, false_result)
* condition 一个布尔表达式,它会被评估为真(TRUE)或假(FALSE)
* true_result 当condition为真时返回的值
* false_result 当condition为假时返回的值
* 例:查询学生姓名,并判断学生的分数是否通过(分数大于等于60视为通过,小于60视为不通过)
*/
SELECT student_name, IF(student_score >= 60, pass, fail) AS isPass FROM student_info;
/**
* IFNULL函数,语法:IFNULL(expression, alternative_value)
* expression: 表达式的值
* alternative_value: 替代值
* 如果expression为NULL,返回alternative_value(替代值),否则返回expression的原始值
* 表达式的值也可以是一个字段,代表校验这个字段是不是NULL
* 表达式的值与替代值的值可以同时是两个字段,代表如果表达式中的字段为NULL,返回替代值中的字段
*/
SELECT staff_name, IFNULL(staff_salary, 0) AS staff_salary FROM staff_info;
SELECT IFNULL(compress_file_url, file_url) AS file_url FROM file_info;
字符串函数:
/**
* LEFT函数:返回最左侧n个字符
* 语法:LEFT(table_column, n)
* RIGHT函数同理
*/
SELECT LEFT(table_column, n) AS column_name FROM table_name;
/**
* TRIM函数:删除空白字符
* 语法:TRIM(column),删除左侧与右侧空白字符,例:' 哈哈 哈 ',执行结果:'哈哈 哈'
* 语法:TRIM(LEADING FROM column), 删除左侧空白字符
* 语法:TRIM(TRAILING FROM column),删除右侧空白字符
*/
SELECT TRIM(table_column) AS column_name FROM table_name;
/**
* REPLACE函数:字符串替换
* 语法:REPLACE(table_column, str1, str2),将table_column中的str1替换为str2
* 注:str2可以为''
*/
SELECT REPLACE(table_column, str1, str2) AS column_name FROM table_name;
/**
* SUBSTRING函数:字符串截取
* 语法:SUBSTRING(table_column, pos, len),返回从位置pos开始长度为len的字符串
* 注:pos索引从1开始
*/
SELECT SUBSTRING(table_column, pos, len) AS column_name FROM table_name;
/**
* CONCAT函数:连接字符串
* 语法:CONCAT(str1, str2, str3...)
* 例:将学生的姓名和年龄字段拼接后返回,使用'-'隔开
*/
SELECT CONCAT(student_name, '-', student_age) AS column_name FROM student_info;
/**
* GROUP_CONCAT函数:用于将同一分组内的列值连接成一个字符串
* 语法:GROUP_CONCAT(table_name ORDER BY SEPARATOR string_value)
* table_name: 要连接的字段
* ORDER BY: 排序方式(不填代表默认排序),需要指定排序列
* SEPARATOR: 分离器(与string_value共同存在)
* string_value: 分隔符(可以与SEPARATOR同时不填,默认使用逗号分割)
* 例1:人员表以部门分组,列出人员姓名,人员姓名之间使用','分割,使用默认排序
* 例2:人员表以部门分组,列出人员姓名,人员姓名之间使用','分割,姓名按照创建时间升序排序
* 例3:人员表以部门分组,列出人员姓名,人员姓名之间使用'-'分割,姓名按照创建时间倒序排序
* 注:使用GROUP_CONCAT可能会更改列表返回长度
*/
SELECT department_name, GROUP_CONCAT(staff_name) AS column_name FROM staff_info GROUP BY department_id;
SELECT
department_name,
GROUP_CONCAT(staff_name ORDER BY create_time) AS column_name
FROM staff_info GROUP BY department_id;
SELECT
department_name,
GROUP_CONCAT(staff_name ORDER BY create_time DESC SEPARATOR '-') AS column_name
FROM staff_info GROUP BY department_id;
模式匹配函数:
/**
* REGEXP函数
* 语法:expression REGEXP pattern
* expression:要搜索的字符串
* pattern: 正则表达式、字符串
*/
SELECT * FROM table_name WHERE table_column REGEXP pattern;