当前位置:网站首页>MySQL custom function instance
MySQL custom function instance
2022-06-26 00:45:00 【Lin fanchen coding】
About MySQL The basic content of function , There are a lot of information on the Internet , Just sort out some valuable sql example , In order to facilitate their own reading , See the example to know the content .
1. Find the distance between two points ?
DELIMITER //
CREATE FUNCTION distance_fn(x1 DOUBLE, y1 DOUBLE, x2 DOUBLE, y2 DOUBLE)
RETURNS DOUBLE
BEGIN
SET @distance = sqrt(pow(x2-x1, 2) + pow(y2-y1, 2));
RETURN @distance;
END;
//
DELIMITER ;
2. Find the area and perimeter of a circle ?
DELIMITER //
CREATE FUNCTION circle_cal_fn(r DOUBLE)
RETURNS VARCHAR(50)
BEGIN
DECLARE result VARCHAR(50) DEFAULT '';
DECLARE len DOUBLE;
DECLARE area DOUBLE;
SET len = 2 * pi() *r;
SET area = pi() * pow(r, 2);
SET len = round(len, 2);
SET area = round(area, 2);
SET result = concat('radius:', r, ' long:', len, ' area:', area);
RETURN result;
END;
//
DELIMITER ;
3. Grade according to the score ?
DELIMITER //
DROP FUNCTION IF EXISTS grade_switch;
CREATE FUNCTION grade_switch(score INT)
RETURNS VARCHAR(30)
BEGIN
DECLARE consult INT;
DECLARE grade VARCHAR(30);
IF(score >= 0) THEN
SET consult = score div 10;
CASE consult
WHEN 10 THEN
SET grade = 'A';
WHEN 9 THEN
SET grade = 'A';
WHEN 8 THEN
SET grade = 'B';
WHEN 7 THEN
SET grade = 'C';
WHEN 6 THEN
SET grade = 'D';
WHEN 5 THEN
SET grade = 'E';
WHEN 4 THEN
SET grade = 'E';
WHEN 3 THEN
SET grade = 'E';
WHEN 2 THEN
SET grade = 'E';
WHEN 1 THEN
SET grade = 'E';
WHEN 0 THEN
SET grade = 'E';
ELSE
SET grade = 'score is error!';
END CASE;
ELSE
SET grade = 'score is error!';
END IF;
RETURN grade;
END;
//
DELIMITER ;
4. Find the three digit number of daffodils ?
DELIMITER //
# Break down the bits of a number , ten , Hundred bit , Then judge whether it is daffodil number
DROP FUNCTION IF EXISTS narcissus_number_fun//
CREATE FUNCTION narcissus_number_fun(num INT)
RETURNS BOOL
BEGIN
DECLARE a INT;
DECLARE b INT;
DECLARE c INT;
SET a = num div 100;
SET b = num % 100 div 10;
SET c = num % 100 % 10;
IF(num = (pow(a,3) + pow(b,3) + pow(c,3))) THEN
RETURN TRUE;
ELSE RETURN FALSE;
END IF;
END;
//
# obtain m~n Between the number of daffodils , And return a string such as :between 101 and 999 narcissus is:153, 370, 371, 407,
DROP FUNCTION IF EXISTS find_narcissus_number_fun//
CREATE FUNCTION find_narcissus_number_fun(m INT, n INT)
RETURNS VARCHAR(100)
BEGIN
DECLARE result VARCHAR(100) DEFAULT '';
DECLARE a INT;
DECLARE b INT;
DECLARE c INT;
DECLARE num INT DEFAULT 0;
IF(m <= n && m >= 100 && m <= 999) THEN
SET result = concat('between ', m, ' and ', n, ' narcissus is:');
narcissus_number:LOOP
IF(narcissus_number_fun(m)) THEN
SET num = num + 1;
SET result = concat(result, m, ', ');
END IF;
SET m = m +1;
IF(m > n) THEN LEAVE narcissus_number;
END IF;
END LOOP narcissus_number;
IF(num=0) THEN SET result = concat(result, 'not find');
END IF;
ELSE
SET result = 'invalid data';
END IF;
RETURN result;
END;
//
DELIMITER ;
5. Find out 2-n All the prime Numbers between ?
DELIMITER //
# Judge whether it is a prime number
CREATE FUNCTION judge_prime(num INT) RETURNS BOOL
BEGIN
DECLARE i INT DEFAULT 2;
DECLARE flag INT DEFAULT 0;
prime:WHILE i <= floor(sqrt(num)) DO
IF(num % i = 0) THEN
RETURN FALSE;
END IF;
SET i = i + 1;
END WHILE prime;
RETURN TRUE;
END;
//
# Upper limit of given interval n, Find out 2-n All the prime Numbers between , And return the result
CREATE FUNCTION find_prime_fun(n INT) RETURNS VARCHAR(100)
BEGIN
DECLARE result VARCHAR(100) DEFAULT '';
DECLARE m INT DEFAULT 2;
IF(n >= 2) THEN
SET result = concat('between ', 2, ' and ', n, ' prime is: ');
prime:WHILE m <= n DO
IF(judge_prime(m)) THEN
SET result = concat(result, m, ', ');
END IF;
SET m = m+1;
END WHILE prime;
ELSE
SET result = 'invalid data!';
END IF;
RETURN result;
END;
//
DELIMITER ;
6.1. seek s=a+aa+aaa+...+aa...a It's worth , among a It's a number , The last addend has n individual a. for example :2+22+222+2222+22222, here n=5.a And n Input by keyboard ?
DELIMITER //
# The number of each bit is the same and the bits m, altogether n position , Sum up
CREATE FUNCTION get_plug_fun(m INT, n INT) RETURNS INT
BEGIN
DECLARE i INT DEFAULT 0;
DECLARE result INT DEFAULT 0;
plug: WHILE(i < n) DO
SET result = result + pow(10, i)*m;
SET i = i + 1;
END WHILE plug;
RETURN result;
END;
//
CREATE FUNCTION get_accumulate_fun(m INT, n INT) RETURNS INT
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE result INT DEFAULT 0;
accumulate: WHILE(i <= n) DO
SET result = result + get_plug_fun(m, i);
SET i = i+1;
END WHILE accumulate;
RETURN result;
END;
//
DELIMITER ;
7. Arabic numerals to Chinese characters ?
DELIMITER //
DROP FUNCTION IF EXISTS tohanzi//
create FUNCTION tohanzi(n_LowerMoney DECIMAL)
RETURNS VARCHAR(120)
BEGIN
Declare v_LowerStr VARCHAR(200) ;
Declare v_UpperPart VARCHAR(200) ;
Declare v_UpperStr VARCHAR(200) ;
Declare i_I int ;
set v_LowerStr = LTRIM(RTRIM(ROUND(n_LowerMoney,2 ) ) ) ;
set i_I = 1 ;
set v_UpperStr = '' ;
while ( i_I <=char_length(v_LowerStr ) ) do
set v_UpperPart = CONCAT( case substring(v_LowerStr,char_length(v_LowerStr) - i_I + 1,1 )
WHEN '.' THEN ' element '
WHEN '0' THEN ' zero '
WHEN '1' THEN ' one '
WHEN '2' THEN ' Ii. '
WHEN '3' THEN ' 3 '
WHEN '4' THEN ' boss '
WHEN '5' THEN ' wu '
WHEN '6' THEN ' lu '
WHEN '7' THEN ' Retailer, '
WHEN '8' THEN ' '
WHEN '9' THEN ' nine '
END,
case i_I
WHEN 1 THEN ' branch '
WHEN 2 THEN ' horn '
WHEN 3 THEN ''
WHEN 4 THEN ''
WHEN 5 THEN ' Ten '
WHEN 6 THEN ' Bai '
WHEN 7 THEN ' Thousand '
WHEN 8 THEN ' ten thousand '
WHEN 9 THEN ' Ten '
WHEN 10 THEN ' Bai '
WHEN 11 THEN ' Thousand '
WHEN 12 THEN ' Billion '
WHEN 13 THEN ' Ten '
WHEN 14 THEN ' Bai '
WHEN 15 THEN ' Thousand '
WHEN 16 THEN ' ten thousand '
ELSE ''
END );
set v_UpperStr =CONCAT( v_UpperPart , v_UpperStr) ;
set i_I = i_I + 1 ;
end while;
set v_UpperStr = REPLACE(v_UpperStr,' zero ',' zero ') ;
set v_UpperStr = REPLACE(v_UpperStr,' zero ',' zero ') ;
set v_UpperStr = REPLACE(v_UpperStr,' Zero thousand ',' zero ') ;
set v_UpperStr = REPLACE(v_UpperStr,' Zero zero ',' zero ') ;
set v_UpperStr = REPLACE(v_UpperStr,' zero zero ',' zero ') ;
set v_UpperStr = REPLACE(v_UpperStr,' Zero angle, zero point ',' whole ') ;
set v_UpperStr = REPLACE(v_UpperStr,' Zero point ',' whole ') ;
set v_UpperStr = REPLACE(v_UpperStr,' Zero angle ',' zero ') ;
set v_UpperStr = REPLACE(v_UpperStr,' Billion yuan ',' One hundred million yuan ') ;
set v_UpperStr = REPLACE(v_UpperStr,' Billion yuan ',' One hundred million yuan ') ;
set v_UpperStr = REPLACE(v_UpperStr,' Billion ',' Billion ') ;
set v_UpperStr = REPLACE(v_UpperStr,' Ten thousand yuan ',' Ten thousand yuan ') ;
set v_UpperStr = REPLACE(v_UpperStr,' Ten thousand yuan ',' Ten thousand yuan ') ;
set v_UpperStr = REPLACE(v_UpperStr,' zero ',' Billion ') ;
set v_UpperStr = REPLACE(v_UpperStr,' zero ',' ten thousand ') ;
set v_UpperStr = REPLACE(v_UpperStr,' zero yuan ',' element ') ;
set v_UpperStr = REPLACE(v_UpperStr,' zero zero ',' zero ') ;
if ( ' element ' = substring(v_UpperStr,1,1)) then
set v_UpperStr = substring(v_UpperStr,2,(char_length(v_UpperStr) - 1));
end if;
if ( ' zero ' = substring(v_UpperStr,1,1)) then
set v_UpperStr = substring(v_UpperStr,2,(char_length(v_UpperStr) - 1)) ;
end if;
if ( ' horn ' = substring(v_UpperStr,1,1)) then
set v_UpperStr = substring(v_UpperStr,2,(char_length(v_UpperStr) - 1)) ;
end if;
if ( ' branch ' = substring(v_UpperStr,1,1)) then
set v_UpperStr = substring(v_UpperStr,2,(char_length(v_UpperStr) - 1)) ;
end if;
if (' whole ' = substring(v_UpperStr,1,1)) then
set v_UpperStr = ' Zero integer ' ;
end if;
return v_UpperStr;
END;
//
DELIMITER ;
8. A function that randomly generates names ?
DELIMITER //
DROP FUNCTION IF EXISTS tohanzi//
CREATE FUNCTION CreateName()
RETURNS varchar(3)
begin
DECLARE LN VARCHAR(300);
DECLARE MN VARCHAR(500);
DECLARE FN VARCHAR(500);
DECLARE LN_N INT;
DECLARE MN_N INT;
DECLARE FN_N INT;
SET LN=' Li Wang Zhang Liu Chen Yang Huang Zhao Zhou Wu Xu sun Zhu Ma Hu Guo Lin He Gaoliang Zheng Luo song Xie Tang Han Cao Xu Deng Xiao Feng Zeng Cheng Cai Peng Pan Yuan Yu Dong Yu Su Ye Lu Wei Jiang Tian Du Ding Shen Jiang Fan Jiang Fu Zhong Lu Wang Dai Cui Ren Lu Liao Yao Fang Jinqiu Xia Tan Wei Jia Zou Shi Xiong Meng Qin Yan Xue Hou Lei Bailong Duan Hao Kong Shao Shi Mao Chang Wan Gu Lai Wu Kang He Yan Yin Qian Shi Niu Hong Gong ';
SET MN=' Wei Gang Yong Yi Jun Yun Lian Zhen Huan Xue Rong Ai Mei Xia Xiang Yue Ying Yuan Yan Rui fan Jia Qiong Qin Zhen Li Gui Di ye bicai FA Wu Lilin Lun Han Lang Bo Hong Yan Ruo Ming Peng bin Liang Dongwei Qi Kelun Xiang Xu Peng Ze Chen Chen Shi to build a home to build a tree Yan de River Zhe Jiang Chao Hao Lu Ya Qi Jing Yu Hua Hui Qiao Mei Jie Xin Ying Lichi Si Xin Bang Cheng Le Shaogong Song Shan Hou Qing Lei Min You Yu Ping Hong e Ling Xiang Yan Cai Lan Feng Jie Mei Xiujuan when she went to Britain Tai Sheng Xiongchen Jun Guan CE Teng Nan Rong Feng Hang Hong Feng Feng Qiang the Military peace, Eastern civilization, great strength, eternal health, broad vision, righteousness, prosperity, prosperity, benevolence, tranquility, wealth, prosperity, national victory, learning, auspiciousness, talent development, Wu Xinli, Qing feibin, Fushun, Xinzi, jietao, Changcheng, kangxingguang, Tianda, Anyan, Zhongmao, Jinjin, Lin Youjian, Biao, Bocheng, first respect, strengthen the society, think about the people, be brave, be brave, be proud, be generous, be grateful, be friends of the people, Yu He, Zhe Jiang, Chaohao, Liang Liang, Liang, Liang, Dongwei, Qi, Kelun, Xiang, Xu, Peng, Ze, Chenchen, build a family, make Shu, Yan, be virtuous, be prosperous Xiong Chen, Jun Guan, CE Teng, Nan Rong, Feng Hang Hong ';
SET FN=' Wei Gang Yong Yi Jun Yun Lian Zhen Huan Xue Rong Ai Mei Xia Xiang Yue Ying Yuan Yan Rui fan Jia Qiong Qin Zhen Li Gui Di ye bicai FA Wu Lilin Lun Han Lang Bo Hong Yan Ruo Ming Peng bin Liang Dongwei Qi Kelun Xiang Xu Peng Ze Chen Chen Shi to build a home to build a tree Yan de River Zhe Jiang Chao Hao Lu Ya Qi Jing Yu Hua Hui Qiao Mei Jie Xin Ying Lichi Si Xin Bang Cheng Le Shaogong Song Shan Hou Qing Lei Min You Yu Ping Hong e Ling Xiang Yan Cai Lan Feng Jie Mei Xiujuan when she went to Britain Tai Sheng Xiongchen Jun Guan CE Teng Nan Rong Feng Hang Hong Feng Feng Qiang the Military peace, Eastern civilization, great strength, eternal health, broad vision, righteousness, prosperity, prosperity, benevolence, tranquility, wealth, prosperity, national victory, learning, auspiciousness, talent development, Wu Xinli, Qing feibin, Fushun, Xinzi, jietao, Changcheng, kangxingguang, Tianda, Anyan, Zhongmao, Jinjin, Lin Youjian, Biao, Bocheng, first respect, strengthen the society, think about the people, be brave, be brave, be proud, be generous, be grateful, be friends of the people, Yu He, Zhe Jiang, Chaohao, Liang Liang, Liang, Liang, Dongwei, Qi, Kelun, Xiang, Xu, Peng, Ze, Chenchen, build a family, make Shu, Yan, be virtuous, be prosperous Xiong Chen, Jun Guan, CE Teng, Nan Rong, Feng Hang Hong ';
SET LN_N=CHAR_LENGTH(LN);
SET MN_N=CHAR_LENGTH(MN);
SET FN_N=CHAR_LENGTH(FN);
return Concat(substring(LN,ceil(rand()*LN_N),1),substring(MN,ceil(rand()*MN_N),1),substring(FN,ceil(rand()*FN_N),1));
End;
//
DELIMITER ;
边栏推荐
- 论文中英文大小写、数字与标点的正确撰写方式
- Leetcode 513. Find the value in the lower left corner of the tree
- 使用VS2022编译Telegram桌面端(tdesktop)
- SQL按某字段去重 保留按某个字段排序最大值
- What are the red lines of open source that should not be trodden on?
- SQL中只要用到聚合函数就一定要用到group by 吗?
- Display unassigned virtual address after easyconnect connection
- 86. (cesium chapter) cesium overlay surface receiving shadow effect (gltf model)
- Kylin
- Drag the mouse to rotate the display around an object
猜你喜欢
Qt优秀开源项目之九:qTox
Learn to identify follow-up questions in dialogue Q & A
1-11solutions to common problems of VMware virtual machine
C IO stream (II) extension class_ Packer
leetcode.14 --- 最长公共前缀
Ad20 (Altium designer) PCB highlight network
Installation and configuration of gradle environment
jarvisoj_level2_x64
【TSP问题】基于Hopfield神经网络求解旅行商问题附Matlab代码
1-11Vmware虚拟机常见的问题解决
随机推荐
Simulink求解器综合介绍
Installation and configuration of gradle environment
Oracle RAC cluster failed to start
Learn to identify follow-up questions in dialogue Q & A
渲云携手英特尔,共创云渲染“芯”时代
Installing redis on Linux
Atlas200dk brush machine
Idea kotlin version upgrade
Methods of modifying elements in JS array
jarvisoj_level2_x64
Daily question brushing record (IV)
Circuit board edge removal - precautions for V-CUT splitting machine
机器视觉:照亮“智”造新“视”界
《SQL优化核心思想》
Flink reports error: a JNI error has occurred, please check your installation and try again
"Method not allowed", 405 problem analysis and solution
mtb13_Perform extract_blend_Super{Candidate(PrimaryAlternate)_Unique(可NULL过滤_Foreign_index_granulari
SSL unresponsive in postman test
1-9network configuration in VMWare
No executorfactory found to execute the application