mysql 抽取除查询结果中的指定类型数据(如数字)

实现这一功能需要应用到函数,具体如下:

新建函数getNum , 参数 str varchar(50) , 函数返回结果  varchar(50);

下图是使用navicat 建立函数的内容:

mysql 抽取除查询结果中的指定类型数据(如数字)

》说明:
1、ASCII(mid(str,strLength,1))是获取指定字符的ASCII码, 而十进制48至57  对应的ASCII码就是字符0-9;
2、ASCII(mid(str,strLength,1)),先mid(str,strLength,1)取字符串str中第strLength个字符; 再取ASCII()得到这个字符的ASCII码。
Mid()就是从一个字符串中取子字符串,比如a="aabbcc",我们想取出"bb"就可以用Mid("aabbcc",3,2)。
Mid有3个参数:
第一参数是要从哪个字符串中取;
第二个参数是指从第几个开始取;
第三个参数是指取几个;
3、使用REVERSE() 函数是由于拼接的temp字符里面的内容相对于原字段值来说内容是倒序的,所以需要调用REVERSE()函数将temp的内容顺序颠倒过来。


》函数调用方法举例:

SELECT CAST(getNum(file_name) AS UNSIGNED) from file_record;

file_name 字段原值为ad6e4db74fd74c3694efb85bae55a71f, 查询结果为6474743694855571

这里CAST函数不加查询结果也是一样的, CAST函数是将提取出来的数字字符串转换为特定类型,整数就是对应类型UNSIGNED,这么写单纯是一方面是规范下,另一方面也算是顺便记录下CAST的使用。

------------------------------------------------------------------------------------------------------------------------------------------

关于CAST函数语法规则是:CAST(字段名 AS 转换的类型 ),其中类型可以为:

UNSIGNED 整型
DATETIME 日期和时间型
DATE 日期型
TIME 时间型
CHAR[(N)] 字符型 
DECIMAL float型
SIGNED int

举个栗子,表A有个日期字段create_time, 值为:2020-02-17 15:48:43,则使用CAST的几个不同类型查询结果如下:
(不含整型、int、float)
SELECT CAST(create_time AS DATETIME ) FROM A;  结果:2020-02-17 15:48:43
SELECT CAST(create_time AS DATE) FROM A; 结果:2020-02-17
SELECT CAST(create_time AS TIME ) FROM A; 结果:15:48:43
SELECT CAST(create_time AS CHAR) FROM A;  结果:2020-02-17 15:48:43