标题 | 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,即大小写不敏感)。如果没有修改服务器配置的权限,那就注意出现的每一个表名都要大小写一致。 不注意小细节,往往会浪费很多时间的。细节决定成败。 |
随便看 |
|
在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。