在SQL(結構化查詢語言)中,有許多內置函數可用于各種數據操作和計算。以下是SQL中常用的函數。
在SQL(結構化查詢語言)中,有許多內置函數可用于各種數據操作和計算。以下是SQL中常用的函數。
一.字符串操作、數值計算、日期處理
COUNT(): 統計行數。
SELECT COUNT(*) FROM employees;
SUM(): 計算數值列的總和。
SELECT SUM(salary) FROM employees;
AVG(): 計算數值列的平均值。
SELECT AVG(salary) FROM employees;
MIN(): 返回列中的最小值。
SELECT MIN(salary) FROM employees;
MAX(): 返回列中的最大值。
SELECT MAX(salary) FROM employees;
LENGTH(): 返回字符串的長度。
SELECT LENGTH(name) FROM employees;
SUBSTRING(): 提取字符串的一部分。
SELECT SUBSTRING(name, 1, 3) FROM employees;
REPLACE(): 替換字符串中的子串。
SELECT REPLACE(name, 'John', 'Jonathan') FROM employees;
UPPER(): 將字符串轉換為大寫。
SELECT UPPER(name) FROM employees;
LOWER(): 將字符串轉換為小寫。
SELECT LOWER(name) FROM employees;
二.數據操作和計算
CONCAT(): 連接兩個或多個字符串。
SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees;
TRIM(): 去除字符串兩端的空格或其他字符。
SELECT TRIM(' Hello World! ') AS trimmed_string;
ROUND(): 對數值進行四舍五入。
SELECT ROUND(salary, 2) FROM employees;
CEIL(): 返回大于等于指定數值的最小整數。
SELECT CEIL(123.45) AS ceiling_value;
FLOOR(): 返回小于等于指定數值的最大整數。
SELECT FLOOR(123.45) AS floor_value;
NOW(): 返回當前的日期和時間。
SELECT NOW() AS current_date_time;
DATE(): 從日期時間中提取日期部分。
SELECT DATE(NOW()) AS current_date;
DATEDIFF(): 返回兩個日期之間的天數差。
SELECT DATEDIFF(NOW(), '2024-01-01') AS days_difference;
IFNULL(): 如果表達式的結果為NULL,則返回指定的值。
SELECT IFNULL(middle_name, 'N/A') FROM employees;
COALESCE(): 返回第一個非NULL的表達式。
SELECT COALESCE(middle_name, first_name, 'N/A') FROM employees;
三.數據類型轉換、條件判斷和其他常用操作
CAST(): 將一個表達式轉換為另一種數據類型。
SELECT CAST(salary AS DECIMAL(10, 2)) FROM employees;
CONVERT(): 另一種用于數據類型轉換的函數。
SELECT CONVERT(VARCHAR, hire_date, 101) FROM employees;
ABS(): 返回數值的絕對值。
SELECT ABS(-123.45) AS absolute_value;
POWER(): 返回一個數的指定次方。
SELECT POWER(salary, 2) FROM employees;
SQRT(): 返回一個數的平方根。
SELECT SQRT(salary) FROM employees;
MOD(): 返回兩個數相除的余數。
SELECT MOD(salary, 1000) FROM employees;
SIGN(): 返回數值的符號,負數返回-1,零返回0,正數返回1。
SELECT SIGN(salary) FROM employees;
RAND(): 返回一個0到1之間的隨機數。
SELECT RAND() AS random_number;
CASE: 基于條件返回不同的值。
SELECT
name,
CASE
WHEN salary < 50000 THEN 'Low'
WHEN salary BETWEEN 50000 AND 100000 THEN 'Medium'
ELSE 'High'
END AS salary_level
FROM employees;
DECODE(): 另一種實現條件判斷的函數,類似于CASE。
SELECT
name,
DECODE(salary,
50000, 'Low',
100000, 'Medium',
'High') AS salary_level
FROM employees;
GREATEST(): 返回多個數值中的最大值。
SELECT GREATEST(salary, bonus, commission) FROM employees;
LEAST(): 返回多個數值中的最小值。
SELECT LEAST(salary, bonus, commission) FROM employees;
IF(): 實現條件判斷,如果條件為真則返回一個值,否則返回另一個值。
SELECT
name,
IF(salary > 50000, 'Above Average', 'Below Average') AS salary_status
FROM employees;
LEFT(): 從字符串的左邊開始提取指定數量的字符。
SELECT LEFT(name, 3) FROM employees;
RIGHT(): 從字符串的右邊開始提取指定數量的字符。
SELECT RIGHT(name, 3) FROM employees;
REVERSE(): 反轉字符串。
SELECT REVERSE(name) FROM employees;
CHAR_LENGTH(): 返回字符串中的字符數。
SELECT CHAR_LENGTH(name) FROM employees;
POSITION(): 查找子串在字符串中的位置。
SELECT POSITION('Smith' IN name) FROM employees;
LOCATE(): 查找子串在字符串中的位置,返回子串的位置。
SELECT LOCATE('Smith', name) FROM employees;
GROUP_CONCAT(): 將一個組中的值連接成一個字符串。
SELECT GROUP_CONCAT(name) FROM employees;
四.窗口函數、日期時間操作
ROW_NUMBER(): 窗口函數,用于為結果集中的每一行分配唯一的行號。
SELECT
name,
salary,
ROW_NUMBER() OVER (ORDER BY salary DESC) AS row_num
FROM employees;
RANK(): 窗口函數,用于為結果集中的每一行分配排名,允許并列。
SELECT
name,
salary,
RANK() OVER (ORDER BY salary DESC) AS rank
FROM employees;
DENSE_RANK(): 窗口函數,類似于RANK(),但排名連續,沒有間斷。
SELECT
name,
salary,
DENSE_RANK() OVER (ORDER BY salary DESC) AS dense_rank
FROM employees;
NTILE(): 窗口函數,將結果集劃分為指定數量的桶,并為每一行分配桶號。
SELECT
name,
salary,
NTILE(4) OVER (ORDER BY salary DESC) AS quartile
FROM employees;
LAG(): 窗口函數,用于訪問前一行的值。
SELECT
name,
salary,
LAG(salary, 1) OVER (ORDER BY salary DESC) AS previous_salary
FROM employees;
LEAD(): 窗口函數,用于訪問后一行的值。
SELECT
name,
salary,
LEAD(salary, 1) OVER (ORDER BY salary DESC) AS next_salary
FROM employees;
FIRST_VALUE(): 窗口函數,返回分區中的第一個值。
SELECT
name,
salary,
FIRST_VALUE(salary) OVER (ORDER BY salary DESC) AS first_salary
FROM employees;
LAST_VALUE(): 窗口函數,返回分區中的最后一個值。
SELECT
name,
salary,
LAST_VALUE(salary) OVER (ORDER BY salary DESC) AS last_salary
FROM employees;
DATE_ADD(): 向日期添加指定的時間間隔。
SELECT DATE_ADD(NOW(), INTERVAL 7 DAY) AS next_week;
DATE_SUB(): 從日期減去指定的時間間隔。
SELECT DATE_SUB(NOW(), INTERVAL 7 DAY) AS last_week;
YEAR(): 從日期中提取年份部分。
SELECT YEAR(hire_date) AS hire_year FROM employees;
MONTH(): 從日期中提取月份部分。
SELECT MONTH(hire_date) AS hire_month FROM employees;
DAY(): 從日期中提取天部分。
SELECT DAY(hire_date) AS hire_day FROM employees;
HOUR(): 從日期時間中提取小時部分。
SELECT HOUR(NOW()) AS current_hour;
MINUTE(): 從日期時間中提取分鐘部分。
SELECT MINUTE(NOW()) AS current_minute;
SECOND(): 從日期時間中提取秒部分。
SELECT SECOND(NOW()) AS current_second;
EXTRACT(): 從日期時間中提取指定的部分(年份、月份、天、小時、分鐘、秒)。
SELECT EXTRACT(YEAR FROM hire_date) AS hire_year FROM employees;
FORMAT(): 按照指定格式格式化日期或數值。
SELECT FORMAT(salary, 2) AS formatted_salary FROM employees;
UNIX_TIMESTAMP(): 返回當前時間的Unix時間戳。
SELECT UNIX_TIMESTAMP() AS current_timestamp;
FROM_UNIXTIME(): 將Unix時間戳轉換為日期時間。
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP()) AS current_datetime;
本文來源:https://mp.weixin.qq.com/s/ciALSneN_V2PnNRXjq99nQ
來源:本文內容搜集或轉自各大網絡平臺,并已注明來源、出處,如果轉載侵犯您的版權或非授權發布,請聯系小編,我們會及時審核處理。
聲明:江蘇教育黃頁對文中觀點保持中立,對所包含內容的準確性、可靠性或者完整性不提供任何明示或暗示的保證,不對文章觀點負責,僅作分享之用,文章版權及插圖屬于原作者。
Copyright?2013-2024 JSedu114 All Rights Reserved. 江蘇教育信息綜合發布查詢平臺保留所有權利
蘇公網安備32010402000125
蘇ICP備14051488號-3技術支持:南京博盛藍睿網絡科技有限公司
南京思必達教育科技有限公司版權所有 百度統計