MySQL - 數據處理函數
什麼是數據處理函數
SQL 數據處理函數是用來對表中的數據進行操作和轉換的一組內建函數
這些函數可以在 SELECT
語句、UPDATE
語句中的 SET
子句, 或者任何接受表達式的地方使用
字符串函數
CONCAT(str1, str2, ...)
合併兩個或多個字符串
| id | name |
|----|--------|
| 1 | Jasper |
INPUT:
SELECT CONCAT(id, '-', name)
FROM users;
-- SQL Server 語法
SELECT id + '-' + name
FROM users;
-- Oracle 語法
SELECT id || '-' || name
FROM users;
OUTPUT:
| CONCAT(id, '-', name) |
|-----------------------|
| 1-Jasper |
LENGTH(str)
返回字符串的長度
| id | name |
|----|--------|
| 1 | Jasper |
INPUT:
SELECT LENGTH(name)
FROM users;
OUTPUT:
| LENGTH(name) |
|--------------|
| 6 |
SUBSTRING(str, start, length)
從字符串中提取子串
| id | name |
|----|--------|
| 1 | Jasper |
INPUT:
SELECT SUBSTRING(name, 2, 3)
FROM users
WHERE name='Jasper';
OUTPUT:
| SUBSTRING(name, 2, 3) |
|-----------------------|
| asp |
LOWER(str)
將字符串轉換為小寫
| id | name |
|----|--------|
| 1 | Jasper |
INPUT:
SELECT LOWER(name)
FROM users
WHERE name='Jasper';
OUTPUT:
| LOWER(name) |
|--------------|
| jasper |
UPPER(str)
將字符串轉換為大寫
| id | name |
|----|--------|
| 1 | Jasper |
INPUT:
SELECT UPPER(name, 2, 3)
FROM users
WHERE name='Jasper';
OUTPUT:
| UPPER(name) |
|--------------|
| JASPER |
TRIM(str)
刪除字符串兩端的空格
INPUT:
SELECT TRIM (' Jasper ')
OUTPUT:
'Jasper'
INPUT:
SELECT RTRIM (' Jasper ')
OUTPUT:
' Jasper'
INPUT:
SELECT LTRIM (' Jasper ')
OUTPUT:
'Jasper '
數字函數
ROUND(number, decimals)
將數字四捨五入到指定的小數位數
| name | score |
|--------|------------|
| Jasper | 100.123 |
| David | 60.36 |
| Alice | 64.64 |
INPUT:
SELECT ROUND(score, 1)
FROM grades;
OUTPUT:
| ROUND(score) |
|--------------|
| 100.1 |
| 60.4 |
| 64.6 |
FLOOR(number)
返回小於或等於指定數字的最大整數
INPUT:
SELECT FLOOR(-13.2)
OUTPUT:
-14
INPUT:
SELECT FLOOR(13.2)
OUTPUT:
13
CEIL(number)
返回大於或等於指定數字的最小整數
INPUT:
SELECT CEIL(-10.1);
OUTPUT:
-10
INPUT:
SELECT CEIL(10.1);
OUTPUT:
11
ABS(number)
返回數字的絕對值
INPUT:
SELECT ABS(-10);
OUTPUT:
10
INPUT:
SELECT ABS(10);
OUTPUT:
10
日期和時間函數
NOW()
返回當前日期和時間
INPUT:
SELECT NOW();
OUTPUT:
2023-10-29 19:18:00
CURDATE()
返回當前日期
INPUT:
SELECT CURDATE();
OUTPUT:
2023-10-29
CURTIME()
返回當前時間
INPUT:
SELECT CURTIME();
OUTPUT:
19:18:00
DATE_ADD(date, INTERVAL expr unit)
將時間間隔加到日期
INPUT:
SELECT DATE_ADD('2023-10-29',INTERVAL 1 DAY);
OUTPUT:
2023-10-30
INPUT:
SELECT DATE_ADD('2023-10-29',INTERVAL 1 YEAR);
OUTPUT:
2024-10-29
INPUT:
SELECT DATE_ADD('2023-10-29',INTERVAL 1 MONTH);
OUTPUT:
2023-11-29
INPUT:
SELECT DATE_ADD('2023-10-29',INTERVAL 1 WEEK);
OUTPUT:
2023-11-05
INPUT:
SELECT DATE_ADD('2023-10-29',INTERVAL -1 WEEK);
OUTPUT:
2023-10-22
DATEDIFF(date1, date2)
返回兩個日期之間的天數
INPUT:
SELECT DATEDIFF('2023-10-29', '2023-10-31');
OUTPUT:
-2
轉換函數
CAST(value AS type)
將值轉換為指定類型
INPUT:
SELECT CAST(25.65 AS int);
OUTPUT:
25
CONVERT(value, type)
將值轉換為指定類型(在某些數據庫中)
INPUT:
SELECT CONVERT(int, 25.65);
OUTPUT:
25