Mysql 函数示例

简介

基于mysql实现函数的编写,如何定义输入变量,如何定义和使用返回值等。

获取男女信息

--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

获取多大信息

-- 通过获取有多大了的信息,注该函数需要跟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) -- 补年份,这里假设不会有百岁的情况THEN '19'ELSE '20'END),SUBSTRING(idcard,7,9) -- 从第7位往后取9位,或者写成SUBSTRING(idcard,7),( -- 计算校验位,即对公开算法的SQL实现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

Mysql函数示例(如何定义输入变量与返回值)相关推荐

  1. mysql函数示例_mysql函数备忘单和示例

    mysql函数示例 There are a ton of functions provided by MySQL and most of them are used extensively. I wi ...

  2. python函数+定义+调用+多返回值+匿名函数+lambda+高级函数(reduce、map、filter)

    python函数+定义+调用+多返回值+匿名函数+lambda+高级函数(reduce.map.filter) Python 中函数的应用非常广泛,比如 input() .print().range( ...

  3. php 函数返回值mixed,认识函数的类型、参数与返回值

    函数的类型.参数与返回值 一.函数的基本语法语法 functionfunctionName(类型限定参数列表):返回值类型 { } 案例:计算两个数之和. functionsum(int$a,int$ ...

  4. 【Python】函数的可变可选参数传递及返回值

    函数的参数传递 参数个数 函数可以有参数,也可以没有参数,但必须保留括号 def <函数名>():<函数体>return<返回值> 可选参数传递 函数定义时可以为某 ...

  5. (14年)2.写一个函数int func(int n)其返回值是n的逆序整数,例如n=123函数返回321.n=72839,函数返回93827

    #include <stdio.h> #include <stdlib.h> /*写一个函数int func(int n)其返回值是n的逆序整数 例如n=123.函数返回321 ...

  6. 如何定义一个具有返回值的函数

    定义具有返回值的函数是当执行到时函数会结束并返回当前值 代码如下: <!DOCTYPE html> <html> <body><h2>JavaScrip ...

  7. c语言宏函数返回值,C++宏定义方法的返回值

    这个人呐,面个试都会紧张,一紧张就忘东西...哎 其实究其原因在于自己对知识了解没有深入到一定程度(自己:怪我咯). 起因 今天被问到使用C++语言中的宏来求一年的秒数. 分析问题,其实秒数很容易计算 ...

  8. mysql影响行数解析_对PHP函数mysqli_affected_rows的作用行数返回值的分析

    这篇文章主要介绍了PHP中mysqli_affected_rows作用行数返回值,实例分析了普通模式与oop模式的用法,具有一定的参考借鉴价值,需要的朋友可以参考下 本文实例分析了PHP中mysqli ...

  9. scanf函数和回车、空格 及其返回值

    scanf和回车的关系: 先看一个我们经常使用的代码: char c; scanf("%c", &c); scanf 的各种格式中,%d.%c.%s三种最常用,通常都是以回 ...

最新文章

  1. 几种开源工作流引擎的简单比较(转)
  2. 如何写出优质干净的代码,这6个技巧你不能错过!
  3. 【PHPExcel】生成Excel文件
  4. Java微服务(二)【idea中文插件安装】(手把手编写,超级详细)
  5. java调用指定浏览器_Java调用浏览器打开网页完整实例
  6. Vim直接打开Tampermonkey网址的方法。
  7. leetcode mysql 排名_GitHub - nimphy/leetcode-Mysql
  8. 杂项-Server:Serv-U
  9. python qt gui快速编程 pdf_翻译:《用python和Qt进行GUI编程》——介绍
  10. 电脑可以同时装python2和3吗_在同一台电脑上同时安装Python2和Python3-Go语言中文社区...
  11. sqlserver management studio 2014 升级2016_画质提升音质更佳:Insta360影石ONE R迎来最强升级...
  12. 【POJ2406】Power Strings(hash/kmp)
  13. MAC与PHY的接口GMII RGMII SGMII Serdes
  14. 宋体小四在手机上是几号_word文档4号宋体 word宋体小四是几号字
  15. html 鼠标形状箭头,CSS各种鼠标样式介绍
  16. Error in Summary.factor ‘min’ not meaningful for factors
  17. SEC再收中国互金企业招股书 融360成立简普科技拟融资2亿美元
  18. android 关机界面修改,修改Android关机界面
  19. 刁生富:《重估:人工智能与人的生存》
  20. input 正则控制输入

热门文章

  1. opengl加载显示3D模型blend类型文件
  2. wxWidgets:wxPGMultiButton类用法
  3. boost::spirit模块实现罗马数字解析器(演示符号表)的测试程序
  4. boost::safe_numerics::safe_signed_range相关的测试程序
  5. boost::multiprecision模块实现安全素数的测试程序
  6. boost::math模块计算 Bessel、Neumann 和 Airy 函数的零点的测试程序
  7. boost::hana::comparing用法的测试程序
  8. boost::hana::drop_back用法的测试程序
  9. boost::hana::always用法的测试程序
  10. boost::container实现多态的flat_set