MySQL-自定義函數

自定義函數

函數的作用

mysql數據庫中已經提供了內置的函數,比如:sum,avg,concat等等,方便我們日常的使用,當需要時mysql支持定義自定義的函數,方便與我們對于需用復用的功能進行封裝。

基本語法?

delimiter $

create function 函數名(參數列表)

returns 返回值類型

begin

? ?函數體

end $

delimiter ;

注意:與存儲過程不同,存儲過程是沒有返回值的,如果需要返回則需要使用out或inout類型的參數,函數是有返回值的

一個自定義函數的示例:

delimiter $

create function helloword()

returns varchar(20)

begin

? ? return 'hello word';

end $

delimiter;

?

調用:

?

delimiter $

create function dateformat(fdate datetime)

returns varchar(50)

begin

? ? declare datestr varchar(50) default '';

set datestr = date_format(fdate,'%Y年%M月%H時%i分%s秒');

return datestr;

end $

delimiter ;

?

調用

注意:

  • 函數只能返回一個值,不能返回結果集
  • 一般函數在sql語句中調用
  • 需要傳入參數,則使用函數名(參數)的方式調用
  • 查看函數創建語句:show create function 函數名;
  • 查看所有函數:show function status [like 'pattern']
  • 函數的修改只能修改一些如comment的選項,不能修改內部的sql語句和參數列表

刪除函數:

  • drop function 函數名;

自定義函數示例

示例一

功能描述:下面是一個更復雜且常用的 MySQL 自定義函數示例,示范如何創建一個函數來計算文本字符串的字數。

自定義函數如下:

?

DELIMITER //CREATE FUNCTION word_count(TEXT VARCHAR(255)) RETURNS INT
BEGINDECLARE word_count INT DEFAULT 0;-- 如果輸入字符串為空,返回 0IF TEXT IS NULL OR TRIM(TEXT) = '' THENRETURN 0;END IF;-- 計算單詞數,使用空格作為分隔符SET word_count = LENGTH(TRIM(TEXT)) - LENGTH(REPLACE(TRIM(TEXT), ' ', '')) + 1;-- 如果字符串只有空格,返回 0IF word_count = 1 AND TRIM(TEXT) = '' THENRETURN 0;END IF;RETURN word_count;
END //DELIMITER ;

測試:

SELECT word_count('Hello, how are you today?') AS COUNT;

示例二

功能描述:計算給定日期的周數

?

DELIMITER //CREATE FUNCTION week_of_year(input_date DATE) RETURNS INT
BEGINDECLARE week_number INT;-- 如果輸入日期為空,返回 0IF input_date IS NULL THENRETURN 0;END IF;-- 使用 WEEK 函數計算周數,模式 1 表示周從星期一開始SET week_number = WEEK(input_date, 1);RETURN week_number;
END //DELIMITER ;

測試?

SELECT week_of_year('2024-01-15') AS week_number;

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

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

相關文章

ESP32上C語言實現JSON對象的創建和解析

在ESP32上使用C語言實現JSON對象的創建和解析,同樣可以借助cJSON庫。ESP-IDF(Espressif IoT Development Framework)本身已經集成了cJSON庫,你可以直接使用。以下是詳細的步驟和示例代碼。 1. 創建一個新的ESP-IDF項目 首先&…

【FAQ】PCoIP 會話后物理工作站本地顯示器黑屏

# 問題 工作人員從家里建立了到辦公室工作站的 PCoIP 連接,該工作站安裝了 HP Anyware Graphics Agent,并且還連接了本地顯示器。然后,遠程用戶決定去辦公室進行本地工作,工作站顯示器顯示黑屏(有時沒有信號&#xff…

el-table 目錄樹列表本地實現模糊查詢

table目錄樹結構實現模糊查詢 <el-form :model"queryParams" ref"queryForm" size"small" :inline"true" v-show"showSearch"><el-form-item label"名稱:" prop"Name"><el-input v-mode…

力扣hot100 LeetCode 熱題 100 Java 哈希篇

兩數之和 1. 兩數之和 - 力扣&#xff08;LeetCode&#xff09; 直接暴力 class Solution {public int[] twoSum(int[] nums, int target) {for(int i0;i<nums.length;i){for(int ji1;j<nums.length;j){long ans nums[i]nums[j];if(ans>target)continue;if(anstarg…

前后端部署

#在學習JavaWeb之后&#xff0c;進行了蒼穹外賣的學習。在進行蒼穹外賣的部署的時候&#xff0c;作者遇到了下面的問題# 1.前端工程nginx無法啟動&#xff1a; 當我雙擊已經部署好的nginx工程中nginx.exe文件的時候&#xff0c;在服務中&#xff0c;并沒有找到ngnix成功運行。…

基于 EFISH-SBC-RK3588 的無人機環境感知與數據采集方案

一、核心硬件架構設計? ?高性能算力引擎&#xff08;RK3588 處理器&#xff09;? ?異構計算架構?&#xff1a;集成 8 核 CPU&#xff08;4Cortex-A762.4GHz 4Cortex-A551.8GHz&#xff09;&#xff0c;支持動態調頻與多任務并行處理&#xff0c;單線程性能較傳統四核方案…

什么是Maven

Maven的概念 Maven是一個一鍵式的自動化的構建工具。Maven 是 Apache 軟件基金會組織維護的一款自動化構建工具&#xff0c;專注服務于Java 平臺的項目構建和依賴管理。Maven 這個單詞的本意是&#xff1a;專家&#xff0c;內行。Maven 是目前最流行的自動化構建工具&#xff0…

mongo客戶端操作mongodb記錄

背景&#xff1a; 長時間不操作mongodb數據庫&#xff0c;已經遺忘了命令&#xff0c;今天正好用到&#xff0c;溫習一下 直接上命令 #進入mongodb數據庫安裝bin目錄cd /opt/mongodb/bin#連接mongodb ./mongo #查看所有的數據庫 show dbs; #選擇數據庫 use xx; #查看表 show …

rocky9.4部署k8s群集v1.28.2版本(containerd)(純命令)

文章目錄 前言三個節點的主機名 所有節點操作主機名和ip解析關閉交換分區&#xff0c;關閉防火墻&#xff0c;關閉selinux更換阿里云yum源時間同步修改內核參數修改系統最大打開文件數開啟bridge網橋過濾&#xff0c;加載br_netfilter模塊&#xff0c;加載配置文件安裝ipset及i…

解析塔能科技:綠色低碳智慧節能一站式破局之匙

在能源問題日益凸顯的當下&#xff0c;綠色低碳、高效節能成為全球發展的重要課題。對各類節能方案進行深入剖析后&#xff0c;可以發現塔能科技的綠色低碳智慧節能一站式解決方案極具創新性與實用性&#xff0c;切實為眾多行業面臨的能源困境提供了有效解決路徑。 直面行業痛點…

精選面試題

1、js中set和map的作用和區別? 在 JavaScript 中&#xff0c;Set 和 Map 是兩種非常重要的集合類型 1、Set 是一種集合數據結構&#xff0c;用于存儲唯一值。它類似于數組&#xff0c;但成員的值都是唯一的&#xff0c;沒有重復的值。Set 中的值只能是唯一的&#xff0c;任何…

Flutter之路由和導航

目錄&#xff1a; 1、flutter路由和導航簡介2、路由的使用2.1、使用 Navigator2.2、使用命名路由2.3、使用路由器 3、應用中添加Tab導航4、頁面跳轉一個新頁面和回退5、傳遞數據到新頁面6、使用 RouteSettings 傳遞參數 1、flutter路由和導航簡介 Flutter 提供了一個完整的系統…

KMS工作原理及其安全性分析

在當今數字化時代&#xff0c;數據安全已經成為企業和個人最為關注的話題之一。隨著云計算和大數據的快速發展&#xff0c;如何安全地管理密鑰成為了一個重要的挑戰。KMS&#xff08;Key Management Service&#xff0c;密鑰管理服務&#xff09;作為一種專業的密鑰管理解決方案…

機器學習在網絡安全中的應用:守護數字世界的防線

一、引言 隨著信息技術的飛速發展&#xff0c;網絡安全問題日益凸顯&#xff0c;成為全球關注的焦點。傳統的網絡安全防護手段&#xff0c;如防火墻、入侵檢測系統&#xff08;IDS&#xff09;和防病毒軟件&#xff0c;雖然在一定程度上能夠抵御攻擊&#xff0c;但在面對復雜多…

Java在excel中導出動態曲線圖DEMO

1、環境 JDK8 POI 5.2.3 Springboot2.7 2、DEMO pom <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.3</version></dependency><dependency><groupId>commons…

Android APP 爬蟲操作

工具 夜神模擬器、charles、mitm 等 mitm的使用參考:Mitmproxy對Android進行抓包&#xff08;真機&#xff09;_mitmproxy 安卓-CSDN博客 charles的使用參考&#xff1a;【全網最詳細】手把手教學Charles抓包工具詳細自學教程&#xff0c;完整版安裝教程&#xff0c;詳細介紹…

Redis的LFU策略具體怎么工作?

Redis的LFU&#xff08;Least Frequently Used&#xff09;策略通過動態跟蹤鍵的訪問頻率實現淘汰決策&#xff0c;其核心工作邏輯可分為以下四個部分&#xff1a; 數據結構設計? 字段拆分?&#xff1a;每個Redis對象&#xff08;redisObject&#xff09;的lru字段&#xff…

Redis 及其在系統設計中的作用

什么是Redis Redis 是一個開源的內存數據結構存儲系統&#xff0c;可用作數據庫、緩存和消息代理。它因其快速的性能、靈活性和易用性而得到廣泛應用。 Redis 數據存儲類型 Redis 允許開發人員以各種數據結構&#xff08;例如字符串、位圖、位域、哈希、列表、集合、有序集合…

MySQL:如何用關系型數據庫征服NoSQL核心戰場?

寫在前面&#xff1a;當SQL遇見NoSQL的十年之變 2012年MongoDB掀起文檔數據庫革命時&#xff0c;開發者們不得不在靈活性與事務一致性之間做痛苦抉擇。十年后的今天&#xff0c;MySQL 8.0的JSON功能已實現&#xff1a; ? 二進制存儲效率超越傳統BLOB 40% ? 多值索引使JSON查…

Dart Flutter數據類型詳解 int double String bool list Map

目錄 字符串的幾種方式 bool值的判斷 List的定義方式 Map的定義方式 Dart判斷數據類型 (is 關鍵詞來判斷類型) Dart的數據類型詳解 int double String bool list Map 常用數據類型: Numbers(數值): int double Strings(字符串) String Booleans(布爾…