【精品】MySQL 自定义函数

article/2025/9/24 18:46:50

语法

CREATE FUNCTION <函数名>(参数列表)
RETURNS <返回值数据类型>
BEGINRETURN(<SQL语句>);
END

示例一:生成随机的电话号码

CREATE  FUNCTION `generatePhone`() RETURNS char(11) CHARSET utf8
DETERMINISTIC
BEGINDECLARE head VARCHAR(100) DEFAULT '000,156,136,176,183'; DECLARE content CHAR(10) DEFAULT '0123456789'; DECLARE phone CHAR(11) DEFAULT substring(head, 1+(FLOOR(1 + (RAND() * 3))*4), 3); DECLARE i int DEFAULT 1; DECLARE len int DEFAULT LENGTH(content);WHILE i<9 DOSET i=i+1;SET phone = CONCAT(phone, substring(content, floor(1 + RAND() * len), 1));END WHILE; RETURN phone;
END

SELECT generatePhone();
测试
在这里插入图片描述

示例二:生成随机中文名

CREATE FUNCTION `generateChineseName`() RETURNS varchar(3) CHARSET utf8
DETERMINISTIC
BEGIN
DECLARE xing varchar(2056) DEFAULT '赵钱孙李周郑王冯陈楮卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢喻柏水窦章云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任袁柳酆鲍史唐费廉岑薛雷贺倪汤滕殷罗毕郝邬安常乐于时傅皮齐康伍余元卜顾孟平黄和穆萧尹姚邵湛汪祁毛禹狄米贝明臧计伏成戴谈宋茅庞熊纪舒屈项祝董梁杜阮蓝闽席季麻强贾路娄危江童颜郭梅盛林刁锺徐丘骆高夏蔡田樊胡凌霍虞万支柯昝管卢莫经裘缪干解应宗丁宣贲邓郁单杭洪包诸左石崔吉钮龚程嵇邢滑裴陆荣翁';
DECLARE ming varchar(2056) DEFAULT '嘉懿煜城懿轩烨伟苑博伟泽熠彤鸿煊博涛烨霖烨华煜祺智宸正豪昊然明杰诚立轩立辉峻熙弘文熠彤鸿煊烨霖哲瀚鑫鹏致远俊驰雨泽烨磊晟睿天佑文昊修洁黎昕远航旭尧鸿涛伟祺轩越泽浩宇瑾瑜皓轩擎苍擎宇志泽睿渊楷瑞轩弘文哲瀚雨泽鑫磊梦琪忆之桃慕青问兰尔岚元香初夏沛菡傲珊曼文乐菱痴珊恨玉惜文香寒新柔语蓉海安夜蓉涵柏水桃醉蓝春儿语琴从彤傲晴语兰又菱碧彤元霜怜梦紫寒妙彤曼易南莲紫翠雨寒易烟如萱若南寻真晓亦向珊慕灵以蕊寻雁映易雪柳孤岚笑霜海云凝天沛珊寒云冰旋宛儿绿真盼儿晓霜碧凡夏菡曼香若烟半梦雅绿冰蓝灵槐平安书翠翠风香巧代云梦曼幼翠友巧听寒梦柏醉易访旋亦玉凌萱访卉怀亦笑蓝春翠靖柏夜蕾冰夏梦松书雪乐枫念薇靖雁寻春恨山从寒忆香觅波静曼凡旋以亦念露芷蕾千兰新波代真新蕾雁玉冷卉紫山千琴恨天傲芙盼山怀蝶冰兰山柏翠萱乐丹翠柔谷山之瑶冰露尔珍谷雪乐萱涵菡海莲傲蕾青槐冬儿易梦惜雪宛海之柔夏青亦瑶妙菡春竹修杰伟诚建辉晋鹏天磊绍辉泽洋明轩健柏煊昊强伟宸博超君浩子骞明辉鹏涛炎彬鹤轩越彬风华靖琪明诚高格光华国源宇晗昱涵润翰飞翰海昊乾浩博和安弘博鸿朗华奥华灿嘉慕坚秉建明金鑫锦程瑾瑜鹏经赋景同靖琪君昊俊明季同开济凯安康成乐语力勤良哲理群茂彦敏博明达朋义彭泽鹏举濮存溥心璞瑜浦泽奇邃祥荣轩';
DECLARE I_xing int DEFAULT LENGTH(xing) / 3;
DECLARE I_ming int DEFAULT LENGTH(ming) / 3;
DECLARE return_str varchar(2056) DEFAULT '';
SET return_str = CONCAT(return_str, substring(xing, floor(1 + RAND() * I_xing), 1));
SET return_str = CONCAT(return_str, substring(ming, floor(1 + RAND() * I_ming), 1));
IF RAND() > 0.400 THEN
SET return_str = CONCAT(return_str, substring(ming, floor(1 + RAND() * I_ming), 1));
END IF;
RETURN return_str;
END

SELECT generateChineseName();
结果:
在这里插入图片描述

示例三:生成定长的随机字符串

CREATE  FUNCTION `randString`(n INT) RETURNS varchar(255) CHARSET utf8
DETERMINISTIC
BEGINDECLARE chars_str varchar(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';DECLARE return_str varchar(255) DEFAULT '';DECLARE i INT DEFAULT 0;WHILE i < n DOSET return_str = concat(return_str,substring(chars_str , FLOOR(1 + RAND()*62 ),1));SET i = i +1;END WHILE;RETURN return_str;
END;

结果:
SELECT randString(15);
在这里插入图片描述

示例四:生成随机datetime

CREATE  FUNCTION `randDatetime`(startStr datetime ,endStr datetime) RETURNS varchar(20) CHARSET utf8
DETERMINISTIC
BEGINDECLARE dateStr varchar(10) DEFAULT '';DECLARE return_str varchar(20) DEFAULT '';SET dateStr = date(from_unixtime(unix_timestamp(startStr) + floor( rand() * ( unix_timestamp(endStr) - unix_timestamp(startStr) + 1 ) )));SET return_str = concat(dateStr,' ', floor(rand()*24),':',floor(rand()*60),':',floor(rand()*60));RETURN return_str;
END;

结果:
SELECT randDatetime(‘2017-01-01’,‘2022-12-12’);
在这里插入图片描述

示例:生成指定长度的汉字字符串

CREATE FUNCTION `genChinese`(n INT) RETURNS varchar(255) CHARSET utf8
DETERMINISTIC
BEGIN
DECLARE hanzi varchar(1056) DEFAULT '的一是了我不人在他有这个上们来到时大地为子中你说生国年着就那和要她出也得里后自以会家可下而过天去能对小多然于心学么之都好看起发当没成只如事把还用第样道想作种开美总从无情己面最女但现前些所同日手又行意动方期它头经长儿回位分爱老因很给名法间斯知世什两次使身者被高已亲其进此话常与活正感见明问力理尔点文几定本公特做外孩相西果走将月十实向声车全信重三机工物气每并别真打太新比才便夫再书部水像眼等体却加电主界门利海受听表德少克代员许伟先口由死安写性马光白或住难望教命花结乐色更拉东神记处让母父应直字场平报友关放至张认接告入笑内英军候民岁往何度山觉路带万男边风解叫任金快原吃妈变通师立象数四失满战远格士音轻目条呢病始达深完今提求清王化空业思切怎非找片罗钱怯吗语元喜曾离飞科言干流欢约各即指合反题必该论交终林请医晚制球决霍传画保读运及则房早院量苦火布品近坐产答星精视五连司巴奇管类未朋且婚台夜青北队久乎越观落尽形影红爸百令周吧识步希亚术留市半热送兴造谈容极随演收首根讲整式取照办强石古华滑拿计您装似足双妻尼转诉米称丽客南领节衣站黑刻统断福城故历惊脸选包紧争另建维绝树系伤示愿持千史谁准联妇纪基买志静阿诗独复痛消社算义竟确酒需单治卡幸兰念举仅钟怕共毛句息功官待究跟穿室易游程号居考突皮哪费倒价图具刚脑永歌响商礼细专黄块脚味灵改据般破引食仍存众注笔甚某沉血备习校默务土微娘须试怀料调广辉苏显赛查密议底列富梦错座参八除跑亮假印设线温虽掉京初养香停际致阳纸李纳验助激够严证帝饭忘趣支春集丈木研班普导顿睡展跳获艺六波察群皇段急庭创区奥器谢弟店否害草排背止组州朝封晴板角况曲馆育忙质河续哥呼若推境遇雨标姐充围案伦护冷警贝著雪索剧啊船险烟依斗值帮汉慢佛肯闻唱沙局伯族低玩资屋击速顾泪洲团圣旁堂兵七露园牛哭旅街劳型烈姑陈莫鱼异抱宝权鲁简态级票怪寻杀律胜份汽右洋范床舞秘午登楼贵吸责例追较职属渐左录丝牙党继托赶章智冲叶胡吉卖坚喝肉遗救修松临藏担戏善卫药悲敢靠伊村戴词森耳差短祖云规窗散迷油旧适乡架恩投弹铁博雷府压超负勒杂醒洗采毫嘴毕九冰既状乱景席珍童顶派素脱农疑练野按犯拍征坏骨余承置脏彩灯巨琴免环姆暗换技翻束增忍餐洛塞缺忆判欧层付阵玛批岛项狗休懂武革良恶恋委拥娜妙探呀营退摇弄桌熟诺宣银势奖宫忽套康供优课鸟喊降夏困刘罪亡鞋健模败伴守挥鲜财孤枪禁恐伙杰迹妹猪遍盖副坦牌江顺秋萨菜划授归浪听凡预奶雄升韧编典袋莱含盛济蒙棋端腿招释介烧误';
DECLARE i int DEFAULT 0;
DECLARE res varchar(255) DEFAULT '';
set i = 1000 - n - floor( RAND() *(1000-n) );
SET res = SUBSTRING(hanzi,i,n);
RETURN res;
END

结果:SELECT genChinese(80);
在这里插入图片描述


http://chatgpt.dhexx.cn/article/ypLAPVWd.shtml

相关文章

sql:mysql:自定义函数

一、基本语法 delimiter 自定义符号  -- 如果函数体只有一条语句, begin和end可以省略, 同时delimiter也可以省略create function 函数名(形参列表) returns 返回类型  -- 注意是retrunsbegin函数体    -- 函数内定义的变量如&#xff1a;set x 1; 变量x为全局变量&am…

mysql之自定义函数

本文内容&#xff1a; 什么是函数函数的创建函数的调用函数的查看函数的修改函数的删除 首发日期&#xff1a;2018-04-18 什么是函数&#xff1a; 函数存储着一系列sql语句&#xff0c;调用函数就是一次性执行这些语句。所以函数可以降低语句重复。【但注意的是函数注重返回值&…

SQL Server 自定义函数(Function)

SQL Server 自定义函数&#xff08;Function&#xff09;——参数默认值 sql server 自定义函数分为三种类型&#xff1a;标量函数&#xff08;Scalar Function&#xff09;、内嵌表值函数&#xff08;Inline Function&#xff09;、多声明表值函数&#xff08;Multi-Statemen…

mysql自定义函数实现

mysql自定义函数实现 环境准备 查看mysql版本 select version();查看mysql存储引擎 show variables like %storage_engine%;创建测试表 CREATE TABLE dsp_user_media_tag (id int(11) NOT NULL AUTO_INCREMENT,imei varchar(50) COLLATE utf8_bin DEFAULT NULL,tagname va…

MySQL自定义函数用法详解

MySQL自定义函数用法详解-复合结构自定义变量/流程控制 自定义函数 (user-defined function UDF)就是用一个象ABS() 或 CONCAT()这样的固有&#xff08;内建&#xff09;函数一样作用的新函数去扩展MySQL。 所以UDF是对MySQL功能的一个扩展 创建和删除自定义函数语法: 创建UDF:…

SQL server 自定义函数FUNCTION的使用

前言&#xff1a; 在SQL server中不仅可以可以使用系统自带的函数&#xff08;时间函数、聚合函数、字符串函数等等&#xff09;&#xff0c;还可以根据需要自定义函数。 一、定义&#xff1a; 用户自定义函数的类型&#xff1a; 1、标量值函数&#xff08;返回一个标量值&a…

功能测试用例设计方法分享

测试用例可以用来衡量一个项目测试质量&#xff0c;因此在平时的测试流程中&#xff0c;编写测试用例就是测试过程中很重要的一步&#xff0c;每一个测试工程师都需要并且非常熟练的编写测试用例&#xff0c;能在编写测试用例中尽可能的覆盖任何异常的测试点&#xff1b;如何能…

判定表测试用例方法——实例

测试用例设计方法——判定表法 判定表法表示的是有多个输入&#xff0c;和多个输出&#xff0c;而且输入与输入之间有相互的组合关系、输入和输出之间有相互的制约和依赖关系, 判定表由四个组成部分 判定表基本概念  条件桩&#xff1a;输入条件, 列出了系统的所有输入&…

测试用例编写方法

测试用例编写方法 等价类划分法 一、等价类划分法的定义 把程序的输入域和输出域划分成若干部分&#xff0c;然后从各个部分中选取若干代表性数据作为测试用例。这些数据在测试中的作用等价于其所属部分的其他值。 二、等价类划分法的术语 等价类&#xff1a;输入域的各个…

软件测试用例设计方法(一)

目录 软件测试用例设计之等价类划分法一、等价类划分法的定义二、等价类划分法的术语三、等价类划分原则四、实例演示&#xff08;三角形问题和档案管理系统问题&#xff09; 软件测试用例之边界值分析法一、边界值分析法定义二、等价类划分法和边界值分析法的区别三、内部边界…

测试用例方法-判定表法

判定表法案例 若用户欠费或关机&#xff0c;则不允许主被叫 等价类划分法和边界值分析法都是着重考虑单个输入的输入条件&#xff0c;但是没有考虑输入条件的各种组合&#xff0c;输入条件与输出条件之间的相互制约关系。所以要使用判定表法才能解决上述案例编写测试用例的过…

编写测试用例方法之错误推测法

今天我们再来介绍另外一个编写测试用例的方法&#xff1a;错误推测法。话不多说&#xff0c;开始整干货&#xff0c;老规矩&#xff0c;首先全图镇楼。 错误推测法其实它不同于等价类划分法或者边界值分析法&#xff0c;它是对有效等价类和边界值分析法的一个补充。因为错误推测…

【测试】编写测试用例的常用方法

文章目录 1&#xff09;等价类划分法1.1 什么是等价类有效等价类&#xff1a;无效等价类&#xff1a; 1.2 划分标准1.3 划分方法1、确立等价类2、转化为测试用例 1.4 实例&#xff1a;三角形问题1.4.1 分析对输入条件的要求&#xff08;显性和隐性&#xff09;1.4.2 列出等价类…

编写测试用例的方法

编写测试用例的方法 一、等价类划分法&#xff08;重点&#xff09;1、应用场景&#xff1a;多用于输入框。2、概念&#xff1a;3、等价类&#xff1a;4、示例&#xff1a; 二、边界值法&#xff08;重点&#xff09;三、场景法&#xff08;重点&#xff09;1、概念&#xff1a…

编写测试用例的七种方法

1 测试用例的概念 测试用例是为了实施测试而向被测试系统提供的一组集合&#xff0c;这组集合包括&#xff1a;测试环境、操作步骤、测试数据、预期结果等要素 2 常见编写测试用例的七种方法 基于需求的设计方法 等价类 边界值 因果图 场景设计法 错误猜测法 3 基于需…

【路径规划】(4) 蚁群算法,附python完整代码

大家好&#xff0c;今天和各位分享一下蚁群算法&#xff0c;并基于 tkinter 完成一个旅行商问题。完整代码可以从我的 GitHub 中获得&#xff1a; https://github.com/LiSir-HIT/Mathematical-Programming/tree/main/Path%20Planning 1. 算法介绍 蚁群算法是由 Mr.Dorigo 博士…

Python编程实现蚁群算法详解

这篇文章主要介绍了Python编程实现蚁群算法详解,涉及蚂蚁算法的简介,主要原理及公式,以及Python中的实现代码,具有一定参考价值,需要的朋友可以了解下 简介 蚁群算法(ant colony optimization, ACO),又称蚂蚁算法,是一种用来在图中寻找优化路径的机率型算法。它由Marco…

智能优化算法:蝙蝠算法-附代码

智能优化算法&#xff1a;蝙蝠算法-附代码 文章目录 智能优化算法&#xff1a;蝙蝠算法-附代码1.算法原理2.算法流程3.算法结果4.参考文献5.MATLAB代码6.python代码 摘要&#xff1a;蝙蝠算法&#xff08;Bat Algorithm&#xff0c;BA&#xff09;[1] 是受蝙蝠回声定位捕食行为…

蚁群算法介绍(python)

蚁群算法 什么是蚁群算法 蚁群算法(ant colony optimization, ACO)&#xff0c;又称蚂蚁算法&#xff0c;是仿照蚂蚁寻找食物的最短路径行为来设计的仿生算法&#xff0c;是一种概率型算法&#xff0c;适用于优化组合问题。 特点 对图的对称性和目标函数无特殊要求可以解决…

蝙蝠优化算法(python代码)

1.效果图 2.代码 import numpy as np import math import matplotlib.pyplot as plt# 定义目标函数(示例函数为Rastrigin函数) def rastrigin(x):return 10 * len(x) + np.sum(x**2 - 10 * np.cos(2 * np.pi * x))# 蝙蝠优化算法函数 def bat_algorithm(f, D, N, N_gen, A,…