1 字符串处理
1.1、字符串数据处理/提取/分离
SELECT f.Enterprise_Name,
SUBSTR(f.Enterprise_Name,1,LOCATE("(",Enterprise_Name)-1 ) chineseName,
SUBSTR(f.Enterprise_Name,LOCATE("(",Enterprise_Name)+1, LOCATE(")",Enterprise_Name)-LOCATE("(",Enterprise_Name)-1) englishName
FROM `fortune` f limit 10;
处理结果如下图:
使用到两个字符串处理函数:
1.1.1、substr(str,start,len)函数:
str为输入字符串,从start位置开始截取字符串,len表示要截取的长度; 没有指定len长度:表示从start开始起,截取到字符串末尾。指定了len长度:表示从start开始起,截取len个长度。
1.1.2、locate(str1,str2)函数:
返回字符串substr中第一次出现子字符串的位置
1.2 根据身份证号计算年龄/判断性别
select name,id_code,timestampdiff(year, substring(id_code, 7, 8), now()) as age ,
(date_format(now(),'%y')- date_format(substring(id_code, 7, 8),'%y'))age1,
case when mod(substr(id_code,17,1),2)=0 then '女'
when mod(substr(id_code,17,1),2)=1 then '男' else '' end as gender
from student;
处理结果如下图:
计算年龄使用2种方式,计算结果有差异,请根据具体场景使用:
1.2.1 timestampdiff()函数:
用于计算两个日期/时间之间的差异,语法:TIMESTAMPDIFF(unit, datetime1, datetime2)
1.2.2 date_format()函数:
日期格式化函数,语法:DATE_FORMAT(date,format);
判断性别方法:
一、15位身份证号码:第15位代表性别,奇数为男,偶数为女。
二、18位身份证号码:第17位代表性别,奇数为男,偶数为女。