MySQL怎么从字符串中抽取数的值

  介绍

本篇内容介绍了“MySQL怎么从字符串中抽取数值”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

  MySQL的字符串函数非常多,以至于有时候我不知道该如何灵活的使用这些函数。

  字符串基本信息函数,,,,collation 转换,char_length等

  加密函数,,密码(x)、编码,aes_encrypt

  字符串连接函数,,concat (x1, x2,…。)

  修剪函数,ltrim修剪,空白
子字符串操作函数子串(x,开始,长度),中期(x)开始,长度)

  字符串复制函数,重复、空间

  字符串比较函数,比较字符串
字符串逆序函数反向

如果真给一个场景,还真说不定能够拍胸脯适合。

  假设我有如下的需求,比如邮箱注册账号,指定账号是以数字开头,内容如下:

  1234 @mail.com |0>>

  012345 @aa.mail.com |0>>

  1234 mm@mail.com |0>>

  1234 test@mail.com |0>>

  如果需要把里面的数字提取出来,有什么好的办法呢。

  如果使用字符串函数,一种方式就是使用正则,或者直接给定条件来做过滤。

  比如替换(xxxx吗(xxx))

  还有一种思路就是创建一个函数或者存储过程,通过结构化的方法来做转换。

  如上的几种方法其实都比较麻烦,还有什么办法呢,我就举一反三,给出两个来。

  第一个解法就是使用字符串的数据类型转换。

  比如:

  mysql>选择演员(& # 39;123456 @xx.com& # 39;无符号);
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
|投(& # 39;123456 @xx.com& # 39;无符号)|
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
|,,,,,,,,,,,,,,,,,,,,,,,,,,,,123456 |
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
1行,1警告(0.00秒)

  我们可以很明显看到结果和一个警告。

  mysql>显示警告;
+ - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
| Level ,| |代码Message ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|
+ - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
|警告| 1292 |截断不正确的整数值:& # 39;123456 @163.com& # 39;| - - - - - - - - - - - -
+ + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
1行组(0.00秒)

  解法二:

  这个解法更简单,有种鬼斧神工的感觉。
mysql>选择(& # 39;123456 @163.com& # 39;);
+ - - - - - - - - - - - - - - - - - - - - - - - +
| - (& # 39; 123456 @163.com& # 39;) |
+ - - - - - - - - - - - - - - - - - - - - - - - +
|,,,,,,,,,,,,,,123456 |
+ - - - - - - - - - - - - - - - - - - - - - - - +
1行,1警告(0.00秒)

  如果是前面含有冗余的数字,也是可以转换的。

  mysql>选择(& # 39;012345 @aa.mail.com& # 39;);
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
| - (& # 39; 012345 @aa.mail.com& # 39;) |
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
|,,,,,,,,,,,,,,,,,,,12345 |
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
1行,1警告(0.00秒)

MySQL怎么从字符串中抽取数的值