mysql中实现提取字符串中的数字的自定义函数分享
来源: 阅读:661 次 日期:2014-10-24 09:14:13
温馨提示: 小编为您整理了“mysql中实现提取字符串中的数字的自定义函数分享”,方便广大网友查阅!

因需要在mysql的数据表中某一字符串中的字段提取出数字,在网上找了一通,终于找到了一个可用的mysql函数,可以有效的从字符串中提取出数字。

该mysql提取出字符串中的数字函数如下:

代码如下:

create function getnum (varstring varchar(50))

returns varchar(30)

begin

declare v_length int default 0;

declare v_tmp varchar(50) default '';

set v_length=char_length(varstring);

while v_length > 0 do

if (ascii(mid(varstring,v_length,1))>47 and ascii(mid(varstring,v_length,1))<58 ) then

set v_tmp=concat(v_tmp,mid(varstring,v_length,1));

end if;

set v_length = v_length - 1;

end while;

return reverse(v_tmp);

end;

字段使用方法,如下:

代码如下:

select getnum(字段) from table

以一个字符串举例:

代码如下:

select getnum(dfdfd666)

结果返回:666。

并且该函数可以提取出字符串中非连贯的数字,如:

代码如下:

select getnum(dfdd111fd666)

结果返回:111666。

mysql error 1146 tabel doen't exist,一般情况下是表不存在,或者表名写错了、权限问题。

今天遇到了这个问题,仔细核对几遍后,确认无误,又在phpmyadmin里尝试select,可以查询出数据。又核对权限,确认该mysql用户具有所有权限。那这个错误是怎么回事呢?查询了一些资料后,发现如果mysql引擎不对可能会造成真实存在的表却无法访问,但是发现引擎都是myisam。

这下犯愁了,错误出在哪里呢?又找了半天,仍然无果。无辜的看着这段报错代码,发呆了半天,突然发现了一个已经被我忽视的细节,详细的报错代码为 tabel abc doen't exist,这里的表名为大写,而数据库中的表名为abc(马冬注:只为举例,没有此表),是小写的。在phpmyadmin用大写表名abc尝试select,果然报错提示tabel abc doen't exist。

到这里,问题清楚可见,原因是一个被我忽略的问题:windows服务器下,mysql的数据表是大小写不敏感的,而linux服务器默认情况下大小写敏感。如果linux服务器要修改成大小写不敏感,可以找到/etc/my.cnf,在[mysqld]下加入一行: lower_case_table_names=1。(马冬注:lower_case_table_names默认情况下为0,及表名大小写敏感;修改为1,即大小写不敏感)。如果没有修改服务器配置的权限,那就注意出现的每一个表名都要大小写一致。

不注意小细节,往往会浪费很多时间的。细节决定成败。

更多信息请查看IT技术专栏

更多信息请查看网页制作
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map