我的列中包含一个字符串,如下所示
Data
black83736
white87
white893
pink82928
pink1
black27
...
...
我想从该列中获取数字。
修改
我更喜欢mysql解决方案
答案 0 :(得分:4)
试试这个mysql解决方案: (更新)
SELECT replace(reverse(FORMAT(reverse(COLUMN_NAME), 0)), ',', '') as number from TABLE_NAME;
这是针对您的特定情况,您最需要的是数字。
首先我们
Reverse
,所以数字开始
format
,因此删除了字母,格式用于格式化具有指定小数位的数字,此处我们将其指定为0。
reverse
- >获得原始号码
replace
','to'' - >删除格式化第二步的效果。
**
** 上面的解决方案不适用于以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通常不适合任何字符串操作操作。