如何从字符串中提取数字部分

时间:2011-09-29 17:19:45

标签: php mysql

我的列中包含一个字符串,如下所示

Data
black83736
white87
white893
pink82928
pink1
black27
...
...

我想从该列中获取数字。

修改

我更喜欢mysql解决方案

4 个答案:

答案 0 :(得分:4)

试试这个mysql解决方案: (更新)

SELECT replace(reverse(FORMAT(reverse(COLUMN_NAME), 0)), ',', '') as number from TABLE_NAME;

这是针对您的特定情况,您最需要的是数字。

首先我们

Reverse,所以数字开始

format,因此删除了字母,格式用于格式化具有指定小数位的数字,此处我们将其指定为0。

再次

reverse - >获得原始号码

replace','to'' - >删除格式化第二步的效果。

**

(UPDATE)

** 上面的解决方案不适用于以0结尾的数字(感谢karolis告诉)

所以那个

SELECT replace(replace(reverse(FORMAT(reverse(concat(numbers, '9099')), 0)), ',', ''), '9099', '') as number from test1;

这里我们将“9099”附加到数字的末尾,然后最后删除9099.

9099年?只是一个很可能在你的专栏中出现的数字

答案 1 :(得分:3)

$result = preg_replace('~[^0-9]*~', '', $string);

答案 2 :(得分:1)

是的,它非常不优雅,但目前是我所知道的唯一可靠的仅限MySQL 解决方案:

select replace(column_name,
    replace(replace(replace(replace(replace(
    replace(replace(replace(replace(replace(
    column_name, 
    0, ''), 1, ''), 2, ''), 3, ''), 4, ''), 
    5, ''), 6, ''), 7, ''), 8, ''), 9, ''), '')

答案 3 :(得分:0)

filter_var('stri99ng', FILTER_SANITIZE_NUMBER_INT);
  

我更喜欢mysql解决方案

好吧,除非你有强大的处理器或者这个查询没有返回很多结果,否则你不应该这样做。 MySQL通常不适合任何字符串操作操作。