当前位置:网站首页>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 ;
边栏推荐
- "Method not allowed", 405 problem analysis and solution
- Analyze the five root causes of product development failure
- When installing PSU /usr/bin/ld:warning: -z lazload ignore
- debezium
- C IO stream (II) extension class_ Packer
- 鼠标拖拽围绕某个物体旋转展示
- 信号处理函数内必须使用可重入函数
- Multi-Instance Redo Apply
- Explain from a process perspective what happens to the browser after entering a URL?
- Mysql5.7.31 user defined installation details
猜你喜欢

ciscn_2019_en_2

1-9Vmware中网络配置

删库跑路、“投毒”、改协议,开源有哪几大红线千万不能踩?

Simulink求解器综合介绍

Shenzhen Taipower: the way of "communication" of the United Nations

11.1.1 overview of Flink_ Flink overview

Run the test program using rknn-toolkit-lite2 for rk3568 development board

1-9network configuration in VMWare

Wireshark's analysis of IMAP packet capturing

Redisson 3.17.4 release
随机推荐
no_ Expand and use_ concat
CaMKIIa和GCaMP6f是一样的嘛?
Apache基金会正式宣布Apache InLong成为顶级项目
Logstash discards log data that does not match the file name exactly
Use js to obtain the last quarter based on the current quarter
使用VS2022编译Telegram桌面端(tdesktop)
What is micro service
debezium
Dynamic verification code
Example: use C # Net to teach you how to develop wechat official account (21) -- using wechat to pay online collection: H5 method
Is camkiia the same as gcamp6f?
[image detection] vascular tracking and diameter estimation based on Gaussian process and Radon transform with matlab code
Datetimeformatter and localdatetime
Performance leads the cloud native database market! Intel and Tencent jointly build cloud technology ecology
DBCA silent installation and database building
Wireshark's analysis of IMAP packet capturing
【TSP问题】基于Hopfield神经网络求解旅行商问题附Matlab代码
SMT Mounter workflow
jarvisoj_level2_x64
Summary of common terms and knowledge in SMT chip processing industry