繁体   English   中英

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

[英]how to extract the digit part from the string

我有一个列中有一个字符串,如下所示

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

我想从该列中获取数字。

编辑

我更喜欢mysql解决方案

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

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

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

首先我们

Reverse ,所以数字开始

format ,所以删除字母,格式用于格式化具有指定小数位的数字,这里我们将其指定为0。

再次reverse - >获取原始数字

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

**

(UPDATE)

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

所以为此

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

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

9099? 只是一个很可能在您的列中出现的数字

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

是的,它非常不优雅,但目前是我所知道的唯一可靠的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, ''), '')
filter_var('stri99ng', FILTER_SANITIZE_NUMBER_INT);

我更喜欢mysql解决方案

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM