mysql的內置函數

文章目錄

  • mysql的內置函數
    • 時間函數
      • 1. 返回值的數據類型和格式
      • 2. 功能側重點
      • 3. 函數別名情況
      • 我現在想給一個日期加上十天,然后輸出加上十天之后的日期,我該怎么做?
      • 我現在想給一個日期減去兩天,然后輸出減去兩天之后的日期,我該怎么做?
      • 我現在想計算兩個日期之間相差多少天,我該怎么做?
      • 我現在創建出了一個表用來記錄生日,請問我如何向表中插入一條生日信息?
    • 留言板問題
      • 我現在想創建一個留言板,里面的每條記錄屬性包含id,留言的內容,還有留言的日期,我該怎么做?
      • 我現在想往這個留言板中插入一條記錄,讓日期自動填充當前時間,我該怎么做?
      • 我現在想給這個留言板添加一欄,用于存放發表評論的用戶名,我該怎么做?
      • 我想輸出兩分鐘以內發出的所有帖子,我該怎么做?
    • 字符串函數
      • charset是什么意思?怎么用?
      • concat是啥意思?怎么用?
      • instr的作用是什么?怎么用?
      • ucase和lcase的作用是什么?怎么用?
      • left的作用是什么?怎么用?
      • replace的作用是什么?怎么用?
      • strcmp的作用是什么?怎么用?
      • substring的作用是什么?怎么用?
      • ltrim和rtrim的作用是什么?怎么用?
      • 我現在想獲取emp表的ename列的字符集,我該怎么做?
      • 我想在數據庫中,以特定格式展示student表中的信息,具體格式為:“XXX的語文是XXX分,數學是XXX分,英語是XXX分” ,我該怎么做?
      • 我想求學生表中學生姓名占用的字節數 ,我該怎么做?
      • 我想將EMP表ename欄所有名字中的S替換成上海,我該怎么做?
      • 現在我想截取EMP表中ename字段的第二個到第三個字符 ,我該怎么做?
      • 我想以首字母小寫的方式顯示所有員工的姓名,我該怎么做?
    • 數學函數
      • 取-100.2的絕對值
      • 將23.04向上取整
      • 將23.7向下取整
      • 對12.3456保留2位小數位數(小數四舍五入)
      • 產生隨機數
      • 將十進制數10轉化成二進制數
      • 將十進制數15轉化成16進制數
      • 將16進制數10轉化成2進制數
      • 求10除以-3的余數
      • 我現在想生成一個1000以內的隨機數
    • 其他函數
      • 我現在想對一個字符串信息進行摘要加密,我該怎么做?
      • ifnull(val1, val2) 這個表達式的值是多少?

mysql的內置函數

時間函數

在 MySQL 中,有三個比較常見的時間函數CURRENT_DATE()CURRENT_TIME()CURRENT_TIMESTAMP() ,這三個函數有啥區別呢?

1. 返回值的數據類型和格式

  • CURRENT_DATE()
    • 數據類型DATE 類型。
    • 格式:返回當前日期,格式為 YYYY-MM-DD,只包含年、月、日信息,不包含時間部分。例如,在 2024年7月15日執行該函數,返回值為 2024-07-15
  • CURRENT_TIME()
    • 數據類型TIME 類型。
    • 格式:返回當前時間,格式為 HH:MM:SS,只包含時、分、秒信息,不包含日期部分 。比如,在 14點35分20秒執行該函數,返回值為 14:35:20
  • CURRENT_TIMESTAMP()
    • 數據類型DATETIME 類型 。
    • 格式:返回當前日期和時間,格式為 YYYY-MM-DD HH:MM:SS,既包含年、月、日,又包含時、分、秒。例如,在 2024年7月15日 14點35分20秒執行該函數,返回值為 2024-07-15 14:35:20

2. 功能側重點

  • CURRENT_DATE():主要用于獲取當前日期,適用于僅需要日期信息的場景,比如統計當天的銷售記錄、計算某日期范圍內的天數等 。
  • CURRENT_TIME():專注于獲取當前時間,在記錄操作具體時間點(只關注時間部分),或者進行時間相關的邏輯判斷(如判斷是否在某個時間段內)時會用到 。
  • CURRENT_TIMESTAMP():提供完整的日期和時間信息,適用于需要精確記錄事件發生的日期和具體時刻的場景,比如記錄用戶登錄時間、訂單創建時間等 。

3. 函數別名情況

  • CURRENT_DATE():有別名 CURDATE(),二者功能完全相同,可根據個人習慣選用。
  • CURRENT_TIME():有別名 CURTIME(),可以互相替換使用。
  • CURRENT_TIMESTAMP():和 NOW() 功能基本一致,都返回當前的日期和時間。不過在某些特殊場景下,NOW() 返回的是語句開始執行的時間,CURRENT_TIMESTAMP() 返回的是函數執行時的時間。

雖然這三個函數都是獲取當前相關的日期時間信息,但通過數據類型、格式以及功能側重點的差異,能滿足不同的業務需求。

我現在想給一個日期加上十天,然后輸出加上十天之后的日期,我該怎么做?

select + date_add()函數,其中 date_add()第一個參數傳入日期,第二個參數傳入interval + 日期增量 + 增量單位
像這個題,你想加10天,那第二個參數就是interval 10 day ,如果你想加2年,那第二個參數就是interval 2 year
在這里插入圖片描述

我現在想給一個日期減去兩天,然后輸出減去兩天之后的日期,我該怎么做?

select + date_sub()函數,其中date_sub()函數第一個參數傳入日期,第二個參數傳入日期增量
在這里插入圖片描述

我現在想計算兩個日期之間相差多少天,我該怎么做?

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

我現在創建出了一個表用來記錄生日,請問我如何向表中插入一條生日信息?

在這里插入圖片描述

insert into tmp(birthday) values(current_date());

留言板問題

我現在想創建一個留言板,里面的每條記錄屬性包含id,留言的內容,還有留言的日期,我該怎么做?

在這里插入圖片描述
在這里插入圖片描述

我現在想往這個留言板中插入一條記錄,讓日期自動填充當前時間,我該怎么做?

insert into msg(content, sendtime) values('這是一條評論', now());

我現在想給這個留言板添加一欄,用于存放發表評論的用戶名,我該怎么做?

ALTER TABLE msg ADD COLUMN username VARCHAR(50);

我想輸出兩分鐘以內發出的所有帖子,我該怎么做?

select * from msg where date_add(sendtime, interval 2 minute) > now();

字符串函數

charset是什么意思?怎么用?

如何查詢msg表中nickname這一列的數據編碼方式/采用的字符集?
select charset(nickname) from msg
在這里插入圖片描述

concat是啥意思?怎么用?

concat可以將幾個小字符串連接成一個大字符串,使用方法如下
在這里插入圖片描述

instr的作用是什么?怎么用?

instr(string, substring )用來返回substring 在string中出現的位置
在這里插入圖片描述

ucase和lcase的作用是什么?怎么用?

ucase可以將小寫字母轉成大寫字母,lcase可以將大寫字母轉化成小寫字母
使用方法是select + ucase/lcase(‘字符串’);
在這里插入圖片描述

left的作用是什么?怎么用?

語法:left(string2, length)
作用:從string2中的左邊起截取length個字符
在這里插入圖片描述

如果length的長度大于總長,或者lenth小于0,會出現在怎樣的情況呢?
length的長度大于總長,那么會返回整個字符串,如果lenth小于0,返回值為空

replace的作用是什么?怎么用?

在str中用replace_str替換search str
在這里插入圖片描述

如果原字符串中沒有替換目標字符串search str ,此時我們執行replace操作,結果會怎樣呢?
結果原字符串無事發生,然后輸出
在這里插入圖片描述

strcmp的作用是什么?怎么用?

作用是比較兩個字符串是否相等,用法是select + strcmp + (‘字符串1’, ‘字符串2’);
在這里插入圖片描述

請問上圖中,為什么第一個結果是-1,第二個結果是1?
因為’aaa’第一個字符a的ASCII碼比’bbb’第一個字符b的ASCII碼小,所以第一個返回-1,第二個結果是1

substring的作用是什么?怎么用?

select substring(str, pos,length);
從str的pos下標開始,截取length長度的子字符串,然后返回輸出
在這里插入圖片描述

如果lenth的值小于0,或者pos+lenth的長度超過了str的總長度,執行substring(str, pos,length);之后會出現什么結果呢?
如果lenth的值小于0,會返回空
如果pos+lenth的長度超過了str的總長度,那就會一直截取到str的末尾

ltrim和rtrim的作用是什么?怎么用?

ltrim(string):去除字符串左側(前)的空格
rtrim(string):去除字符串右側(后)的空格
trim(string):去除字符串左右兩側(前和后)的空格
在這里插入圖片描述

我現在想獲取emp表的ename列的字符集,我該怎么做?

select charset(ename) from emp;在這里插入圖片描述

我想在數據庫中,以特定格式展示student表中的信息,具體格式為:“XXX的語文是XXX分,數學是XXX分,英語是XXX分” ,我該怎么做?

利用contat將幾個字符串連起來
SELECT CONCAT(name, '的語文是', chinese, '分,數學是', math, '分,英語是', english, '分') AS info FROM student;

在這里插入圖片描述

我想求學生表中學生姓名占用的字節數 ,我該怎么做?

問題轉化:我想查看表中每條記錄的name屬性信息各占多少字節,我該怎么做?
select lenth(name) from exam_result;
在這里插入圖片描述

注意:lenth(str),并不是求str有多少個字符。而是求str占多少個字節

我想將EMP表ename欄所有名字中的S替換成上海,我該怎么做?

這個是原表
在這里插入圖片描述

使用replace語句替換ename列中的關鍵字

在這里插入圖片描述

提問:執行過replace語句之后,數據庫中ename列中的關鍵字會被永久修改嗎?
不會,這個操作的實際流程是,select先篩選,再對篩選之后的結果(形成一份新文件)進行replace操作

現在我想截取EMP表中ename字段的第二個到第三個字符 ,我該怎么做?

調用substring函數
select substring(ename, 2,1) from emp;

我想以首字母小寫的方式顯示所有員工的姓名,我該怎么做?

  1. 先使用 SUBSTRING(name, 1, 1) 提取姓名的首字母
  2. 再用 LOWER 函數將其轉換為小寫
  3. 接著使用 SUBSTRING(name, 2) 獲取姓名從第二個字符開始的部分
  4. 最后用 CONCAT 函數將二者拼接起來。
    select concat(lcase(SUBSTRING(name, 1, 1)), SUBSTRING(name, 2)) from emp;

在這里插入圖片描述

數學函數

取-100.2的絕對值

select abs(-100.2);

將23.04向上取整

select ceiling(23.04);
ceiling的意思是天花板

將23.7向下取整

select floor(23.7);
floor的英文意思是地板

對12.3456保留2位小數位數(小數四舍五入)

select format(12.3456, 2);

產生隨機數

select rand();

將十進制數10轉化成二進制數

bin(decimal_number):用于將十進制數轉換為二進制數,例如 bin(10) 會得到 ‘1010’

將十進制數15轉化成16進制數

hex(decimalNumber):把十進制數轉換成十六進制數,像 hex(15) 結果是 ‘F’ 。

將16進制數10轉化成2進制數

conv(number, from_base, to_base):實現數的進制轉換
其中number 是要轉換的數,from_base 是當前進制,to_base 是目標進制

比如 conv(10, 10, 2) 可將十進制的 10 轉換為二進制,得到 ‘1010’
conv(10, 2, 16) 可將二進制的 10 轉換為16進制,得到 2

求10除以-3的余數

mod(number, denominator):求余函數,計算 number 除以 denominator 的余數
例如 mod(7, 3) 返回 1 。
解釋圖中的結果
在這里插入圖片描述
在 MySQL 中,MOD()函數用于取模運算,其運算規則基于公式a mod b = a - (b * FLOOR(a / b)),這里FLOOR 是向下取整函數 。以下是對圖中三個運算的解釋:
SELECT MOD(10, -3);
先計算 10 / -3 ,結果約為 -3.33 。
然后對 -3.33 向下取整,得到 -4 。
再根據公式計算 10 - (-3 * -4) = 10 - 12 = -2 ,但 MySQL 中取模結果符號與被除數一致 ,被除數是 10 ,所以最終結果為 1 。

SELECT MOD(-10, 3);
計算 -10 / 3 ,結果約為 -3.33 。
向下取整得到 -4 。
由公式可得 -10 - (3 * -4) = -10 + 12 = 2 ,按照 MySQL 規則,結果符號與被除數一致,最終結果為 -1 。

SELECT MOD(-10, -3);
計算 -10 / -3 ,結果約為 3.33 。
向下取整得到 3 。
依據公式計算 -10 - (-3 * 3) = -10 + 9 = -1 ,結果符號與被除數一致,最終結果就是 -1 。

我現在想生成一個1000以內的隨機數

mysql中rand生成隨機數的范圍是多少?
在 MySQL 里,RAND()函數會生成一個范圍在 0(包含)到 1(不包含)之間的隨機浮點數

SELECT FLOOR(RAND() * 1000);
SELECT FLOOR(RAND() * 1000); 這條語句的執行結果是一個介于 0 到 999 之間的隨機整數(包含 0 和 999)

  1. RAND():生成一個 0(包含)到 1(不包含)之間的隨機浮點數,例如 0.1230.987 等。

  2. RAND() * 1000:將隨機數放大 1000 倍,結果變為 0(包含)到 1000(不包含)之間的浮點數,例如 123.456999.999 等。

  3. FLOOR(...):對結果進行向下取整,只保留整數部分,且不四舍五入。例如:

    • RAND() * 1000 結果為 123.456FLOOR 后得到 123
    • 若結果為 999.999FLOOR 后得到 999
    • 若結果為 0.123FLOOR 后得到 0

因此,最終結果是 0 到 999 之間的隨機整數,每次執行可能返回不同的值。

其他函數

我現在想對一個字符串信息進行摘要加密,我該怎么做?

用md5對密碼進行加密:select md5('str')
md5是什么?
MD5(Message-Digest Algorithm 5)屬于一種廣泛使用的哈希函數,能夠把任意長度的數據變換成固定長度(128 位)的哈希值。在數據庫里,該函數常常被用于數據加密、數據完整性校驗等場景。
在這里插入圖片描述
在這里插入圖片描述

添加一個新用戶時,先對密碼進行加密,然后插入insert into user (name, passwd) values ('zhangsan', md5('123456'));
其中md5(‘123456’)表示對密碼’123456’進行加密,md5(‘123456’)作為參數,傳入value,完成密碼的插入

既然如此,那我插入的密碼已經不是我最開始的密碼了,我還能通過密碼在數據庫中檢索到我剛剛插入的那條記錄嗎?
可以的兄弟,條件語句可以寫成where passwd=md5(‘123456’),這樣就能查到

ifnull(val1, val2) 這個表達式的值是多少?

這就是我們C語言中的if語句
if(val1==null) return val2;
else if(val1!=null) return val1;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/97550.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/97550.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/97550.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【動態規劃】子序列問題

一、[最長遞增子序列](https://leetcode.cn/problems/longest-increasing-subsequence/description/)二、[擺動序列](https://leetcode.cn/problems/wiggle-subsequence/description/)三、[最長遞增子序列的個數](https://leetcode.cn/problems/number-of-longest-increasing-s…

P2P技術應用:去中心化

P2P技術應用:https://www.bilibili.com/video/BV1WH4y1Y7i9 P2P與下載器 P2P技術實現的下載協議: 1、種子文件 2、磁力 3、電騾 播放器: 快車、電騾、迅雷 BT(種子)下載的基本技術原理 網盤與P2P技術 網盤公司的主…

數據結構(C語言篇):(八)棧

目錄 前言 一、概念與結構 二、棧的實現 2.1 頭文件的準備 2.2 函數的實現 2.2.1 STInit( )函數(初始化) 2.2.2 STDestroy( )函數(銷毀) 2.2.3 STPush( )函數(入棧) 2.2.4 STPop( )函數&#…

Elasticsearch數據遷移快照方案初探(一):多節點集群配置踩坑記

背景介紹 在生產環境中,我們經常需要將測試環境的Elasticsearch索引數據遷移到生產環境。這次我們遇到了一個典型的多節點集群快照配置問題:需要為所有節點添加path.repo配置,但過程中遇到了各種挑戰。 問題描述 我們的Elasticsearch集群包含…

leedcode 算法刷題第二十天

39. 組合總和 class Solution { public:vector<vector<int>> result;vector<int> temp;void backtructing(vector<int>& candidates, int target, int sum,int start){if(sumtarget){result.push_back(temp);return;}if(sum>target){return;}f…

身份證實名認證API集成—身份核驗接口-網絡平臺安全合規

在數字化浪潮席卷各行各業的今天&#xff0c;網絡空間的安全問題日益受到關注。為防范網絡詐騙、虛假注冊、身份盜用等風險&#xff0c;國家陸續出臺多項法律法規&#xff0c;如《網絡安全法》《個人信息保護法》等&#xff0c;明確要求互聯網服務提供者落實用戶真實身份核驗機…

谷歌TIGER爆火!生成式召回顛覆推薦系統:用語義ID破解冷啟動+多樣性難題,3大數據集性能碾壓傳統模型

注&#xff1a;此文章內容均節選自充電了么創始人&#xff0c;CEO兼CTO陳敬雷老師的新書《GPT多模態大模型與AI Agent智能體》&#xff08;跟我一起學人工智能&#xff09;【陳敬雷編著】【清華大學出版社】 清華《GPT多模態大模型與AI Agent智能體》書籍配套視頻課程【陳敬雷…

分享一個實用的B站工具箱(支持音視頻下載等功能)

文章目錄 ?? 介紹 ?? ?? 演示環境 ?? ?? 一款實用的B站工具箱 ?? ?? 項目亮點 ?? ??? 下載與安裝 ?? 使用指南 ?? 注意事項 ?? 相關鏈接 ?? ?? 介紹 ?? 很多小伙伴在B站追番或者學習時,總會遇到一個很頭疼的問題:想把視頻下載到本地,要么被限…

大話 IOT 技術(4) -- 答疑篇

文章目錄前言手機能與設備直接通信嗎多協議能統一用一個嗎假設我們統一用http協議假設我們統一用mqtt協議bypass服務端和設備不能mqtt直接通信設備必有wifi 和藍牙功能設備為什么不能自己連接網絡配網模式是什么后話當你迷茫的時候&#xff0c;請點擊 物聯網目錄大綱 快速查看前…

機器視覺學習-day14-繪制圖像輪廓

1. 輪廓的概念輪廓是目標物體或者區域在圖像外部的邊界線&#xff0c;通常由一系列像素點相連組成&#xff0c;這些像素點共同構成了一個封閉的形狀&#xff0c;這樣形狀就是輪廓。輪廓與邊緣不同&#xff1a;輪廓是連續的&#xff0c;邊緣可以連續也可以離散輪廓是完整的&…

Linux shell getopts 解析命令行參數

Linux shell getopts 解析命令行參數getopts語法 getopts 選項字符串 名稱 [ 參數 ...]示例1&#xff08;有前置冒號&#xff09;: while getopts ":hdo:" optname; do ...... done示例1&#xff08;無前置冒號&#xff09; while getopts "hdo:" optname…

DeepInteraction++基于多模態交互的自動駕駛感知與規劃框架

DeepInteraction++基于多模態交互的自動駕駛感知與規劃框架 1 論文核心概念 DeepInteraction++ 提出了一種名為"模態交互"(modality interaction)的新策略,用于自動駕駛中的多模態(LiDAR 和相機)感知任務。其核心思想是不將多模態信息融合為單一表示,而是分別…

憶聯參與制定消費級SSD團體標準正式出版! 以“高可靠”引領行業提質增效與用戶體驗升級

引言?在AIPC爆發、數據價值凸顯的當下&#xff0c;存儲設備已超越簡單容器&#xff0c;成為智能體驗基石&#xff0c;其性能與可靠性直接關乎用戶效率與資產安全。然而&#xff0c;消費級SSD長期缺乏統一權威的可靠性標準&#xff0c;使廠商缺乏質量對標依據&#xff0c;用戶亦…

微服務搭建(SpringBoot + Dubbo + Nacos)

1.項目接口2. 編輯pom.xml和application.yml文件2.1父工程pom.xml<?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:s…

android中常見布局及其約束

0 布局的定義 布局可以理解為一種??容器??&#xff0c;用于??組織與排列界面上的控件??。 布局是一個相框&#xff0c;控件就是你要展示的照片。? 你&#xff08;布局規則&#xff09;決定這些照片怎么排列&#xff1a;是從上到下整齊放&#xff08;LinearLayout&am…

Rust語言能干什么

Rust 語言的應用范圍非常廣&#xff0c;幾乎覆蓋了現代軟件開發的全部領域。它最初以“系統級語言”身份出道&#xff0c;但現在已經遠遠超出了這個范疇。下面我從幾個關鍵方向給你梳理一下&#xff0c;Rust 到底能干什么&#xff0c;以及為什么在這些領域它特別有優勢。 1. 系…

只需一個設置就可以解決Microsoft Edge瀏覽器打不開網頁的問題

Microsoft Edge是一款功能強大的網絡瀏覽器&#xff0c;預裝在Windows 10、11系統中。通過這個簡單易懂的教程&#xff0c;學習如何修復Microsoft Edge瀏覽器打不開的問題。1、打開計算機找到C盤&#xff0c;雙擊打開&#xff1a;2、打開【用戶】?【Admin】?【AppData】?【L…

AI 應用 圖文 解說 (二) -- 百度智能云 ASR LIM TTS 語音AI助手源碼

文章的目的為了記錄AI應用學習的經歷&#xff0c;降低AI的入門難度。同時記錄開發流程和要點有些記憶模糊&#xff0c;防止忘記。也希望可以給看到文章的朋友帶來一些收獲。 相關鏈接&#xff1a; AI 應用 圖文 解說 (一) -- 百度智能云 實現 語音 聊天-CSDN博客 AI 應用 圖文 …

計算機Python畢業設計推薦:基于Django的博客網站設計與實現【python/大數據/深度學習/機器學習定制】

精彩專欄推薦訂閱&#xff1a;在下方主頁&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f496;&#x1f525;作者主頁&#xff1a;計算機畢設木哥&#x1f525; &#x1f496; 文章目錄 一、項目介紹二、…

當 AI 開始 “篩選” 信息:算法偏見會加劇認知鴻溝嗎?如何構建公平的 AI 生態?

AI 篩選信息的現狀與原理?在信息爆炸的時代&#xff0c;AI 篩選信息已成為各領域不可或缺的關鍵技術。在社交媒體平臺上&#xff0c;如抖音、小紅書等&#xff0c;AI 根據用戶的點贊、評論、瀏覽歷史等數據&#xff0c;精準推送用戶可能感興趣的內容&#xff0c;極大提升了用戶…