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

5 篇文章 0 订阅
1 篇文章 0 订阅

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

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

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

》说明:
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值