返回 CustomerName 字段第一个字母的 ASCII 码:
SELECT ASCII(CustomerName) AS NumCodeOfFirstChar
FROM Customers;
CHAR_LENGTH(s)
返回字符串 s 的字符数
返回字符串 RUNOOB 的字符数
SELECT CHAR_LENGTH("RUNOOB") AS LengthOfString;
SUBSTRING(s, start, length)
从字符串 s 的 start 位置截取长度为 length 的子字符串,等同于 SUBSTR(s, start, length)
从字符串 RUNOOB 中的第 2 个位置截取 3个 字符:
SELECT SUBSTRING("RUNOOB", 2, 3) AS ExtractString; -- UNO
SUBSTRING_INDEX(s, delimiter, number)
返回从字符串 s 的第 number 个出现的分隔符 delimiter 之后的子串。
如果 number 是正数,返回第 number 个字符左边的字符串。
如果 number 是负数,返回第(number 的绝对值(从右边数))个字符右边的字符串。
Orders 表中 OrderDate 字段减去 2 天:
SELECT OrderId,DATE_SUB(OrderDate,INTERVAL 2 DAY) AS OrderPayDate
FROM Orders
mysql> SELECT TIMEDIFF("13:10:11", "13:10:10");
-> 00:00:01
mysql> SELECT TIMEDIFF('2000:01:01 00:00:00',
-> '2000:01:01 00:00:00.000001');
-> '-00:00:00.000001'
mysql> SELECT TIMEDIFF('2008-12-31 23:59:59.000001',
-> '2008-12-30 01:01:01.000002');
-> '46:58:57.999999'
mysql> SELECT TIMESTAMP("2017-07-23", "13:10:11");
-> 2017-07-23 13:10:11
mysql> SELECT TIMESTAMP('2003-12-31');
-> '2003-12-31 00:00:00'
mysql> SELECT TIMESTAMP('2003-12-31 12:00:00','12:00:00');
-> '2004-01-01 00:00:00'
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)
计算时间差,返回 datetime_expr2 − datetime_expr1 的时间差
mysql> SELECT TIMESTAMPDIFF(DAY,'2003-02-01','2003-05-01'); // 计算两个时间相隔多少天
mysql> SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01'); // 计算两个时间相隔多少月
mysql> SELECT TIMESTAMPDIFF(YEAR,'2002-05-01','2001-01-01'); // 计算两个时间相隔多少年
mysql> SELECT TIMESTAMPDIFF(MINUTE,'2003-02-01','2003-05-01 12:05:55'); // 计算两个时间相隔多少分钟
-> 128885
CASE 表示函数开始,END 表示函数结束。如果 condition1 成立,则返回 result1, 如果 condition2 成立,则返回 result2,当全部不成立则返回 result,而当有一个成立之后,后面的就不执行了。
SELECT CASE
WHEN 1 > 0
THEN '1 > 0'
WHEN 2 > 0
THEN '2 > 0'
ELSE '3 > 0'
->1 > 0
函数
|
描述
|
实例
|
JSON_OBJECT()
|
将键值对转换为 JSON 对象
|
SELECT JSON_OBJECT('key1', 'value1', 'key2', 'value2')
|
JSON_ARRAY()
|
将值转换为 JSON 数组
|
SELECT JSON_ARRAY(1, 2, 'three')
|
JSON_EXTRACT()
|
从 JSON 字符串中提取指定的值
|
SELECT JSON_EXTRACT('{"name": "John", "age": 30}', '$.name')
|
JSON_CONTAINS()
|
检查一个 JSON 字符串是否包含指定的值
|
SELECT JSON_CONTAINS('{"name": "John", "age": 30}', 'John', '$.name')
|
ROW_NUMBER()
|
为查询结果中的每一行分配一个唯一的数字
|
SELECT ROW_NUMBER() OVER(ORDER BY id) AS row_number, name FROM users
|
RANK()
|
为查询结果中的每一行分配一个排名
|
SELECT RANK() OVER(ORDER BY score DESC) AS rank, name, score FROM students
|