当前位置:网站首页>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 ;
边栏推荐
- CXF
- Installation and configuration of gradle environment
- Should group by be used whenever aggregate functions are used in SQL?
- QT excellent open source project 9: qtox
- Why is it best to use equals for integer comparisons
- logstash丢弃没有精准匹配到文件名的日志数据
- Use Coe_ load_ sql_ profile. SQL fixed execution plan
- Solution to SMT grape ball phenomenon
- Use js to obtain the last quarter based on the current quarter
- DPVS fullnat mode kept
猜你喜欢

Blob

Analyze the five root causes of product development failure

从进程的角度来解释 输入URL后浏览器会发生什么?

Example: use C # Net to teach you how to develop wechat official account (21) -- using wechat to pay online collection: H5 method

What is micro service

Atlas200dk刷机

渲云携手英特尔,共创云渲染“芯”时代

元宇宙中的法律与自我监管

1-10Vmware构建自定义的网络架构

Drag the mouse to rotate the display around an object
随机推荐
ciscn_2019_en_2
19c installing PSU 19.12
Anti shake and throttling
10.2.2、Kylin_ Kylin installation, uploading and decompressing, verifying environment variables, starting and accessing
mtb13_Perform extract_blend_Super{Candidate(PrimaryAlternate)_Unique(可NULL过滤_Foreign_index_granulari
Display unassigned virtual address after easyconnect connection
Openresty chapter 01 introduction and installation configuration
2021-04-28
【OEM专场活动】清“芯”夏日,有奖征文
Function and principle of SPI solder paste inspection machine
Solution to SMT grape ball phenomenon
从进程的角度来解释 输入URL后浏览器会发生什么?
SMT Mounter workflow
Comprehensive introduction to Simulink solver
[image detection] vascular tracking and diameter estimation based on Gaussian process and Radon transform with matlab code
jarvisoj_level2_x64
事物/现象/事情/东西/情况/表象
Farsync simple test
Run the test program using rknn-toolkit-lite2 for rk3568 development board
How to bypass SSL authentication