Mysql函数示例(如何定义输入变量与返回值)
生活随笔
收集整理的這篇文章主要介紹了
Mysql函数示例(如何定义输入变量与返回值)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Mysql 函數(shù)示例
簡介
基于mysql實現(xiàn)函數(shù)的編寫,如何定義輸入變量,如何定義和使用返回值等。
獲取男女信息
--1 獲取男女信息 CREATE FUNCTION getGender(idcard varchar(50)) RETURNS varchar(50) CHARSET utf8 BEGIN DECLARE out_gender VARCHAR(4); DECLARE V_SEX VARCHAR(4); IF LENGTH(idcard)=18THENSET V_SEX= SUBSTRING(idcard,17,1) ;IF V_SEX%2=0 THEN SET out_gender='0' ;else SET out_gender='1';end if; ELSEIFLENGTH(idcard)=15THENSET V_SEX= SUBSTRING(idcard,15,1) ;IF V_SEX%2=0 THEN SET out_gender='0';else SET out_gender='1';end if;ELSESET out_gender='3'; END IF; RETURN out_gender; END獲取多大信息
-- 通過獲取有多大了的信息,注該函數(shù)需要跟getId一起使用。 CREATE FUNCTION getAge(idcard varchar(50)) RETURNS varchar(50) CHARSET utf8 BEGINDECLARE out_age VARCHAR(20);DECLARE V_idcard VARCHAR(20);DECLARE C_PK VARCHAR(20);IF LENGTH(idcard)=15 THENSET V_idcard=getId(idcard); ELSE SET V_idcard=idcard ;END IF;IF LENGTH(V_idcard)=18 THEN SET out_age=DATE_FORMAT(curdate(),'%Y')-substr(V_idcard,7,4) ;ELSESET out_age=0;END IF ;IF out_age >=100 OR out_age<0 THEN SET out_age=0;END IF;RETURN out_age;END兼容遺留問題
--兼容歷史遺留問題 CREATE FUNCTION getId(idcard varchar(50)) RETURNS varchar(50) CHARSET utf8 BEGINDECLARE new_idcard varchar(20) DEFAULT '' ; DECLARE id_len varchar(20) DEFAULT '' ; SET id_len=LENGTH(TRIM(idcard)); IF id_len =15 THENSET new_idcard=CONCAT (SUBSTRING(idcard,1,6), -- 取第1到6位,即前6位(CASE WHEN SUBSTRING(idcard,7,2)>SUBSTRING(YEAR(CURDATE()),3,2) -- 補年份,這里假設(shè)不會有百歲的情況THEN '19'ELSE '20'END),SUBSTRING(idcard,7,9) -- 從第7位往后取9位,或者寫成SUBSTRING(idcard,7),( -- 計算校驗位,即對公開算法的SQL實現(xiàn)CASE ((SUBSTRING(idcard,1,1)*7+SUBSTRING(idcard,2,1)*9+SUBSTRING(idcard,3,1)*10+SUBSTRING(idcard,4,1)*5+SUBSTRING(idcard,5,1)*8+SUBSTRING(idcard,6,1)*4+(CASE WHEN SUBSTRING(idcard,7,2)>SUBSTRING(YEAR(CURDATE()),3,2)THEN 1*2+9*1ELSE 2*2+0*1END)+SUBSTRING(idcard,7,1)*6+SUBSTRING(idcard,8,1)*3+SUBSTRING(idcard,9,1)*7+SUBSTRING(idcard,10,1)*9+SUBSTRING(idcard,11,1)*10+SUBSTRING(idcard,12,1)*5+SUBSTRING(idcard,13,1)*8+SUBSTRING(idcard,14,1)*4+SUBSTRING(idcard,15,1)*2 )%11)WHEN 0 THEN '1'WHEN 1 THEN '0'WHEN 2 THEN 'X'WHEN 3 THEN '9'WHEN 4 THEN '8'WHEN 5 THEN '7'WHEN 6 THEN '6'WHEN 7 THEN '5'WHEN 8 THEN '4'WHEN 9 THEN '3'WHEN 10 THEN '2' ELSE 'FALSE' END ));elseset new_idcard=idcard; end if;RETURN new_idcard; END 與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的Mysql函数示例(如何定义输入变量与返回值)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中行信用卡还款晚一天算逾期吗
- 下一篇: SQL Server存储过程里全库查找引