使用正则表达式更新mysql表

时间:2011-04-18 06:37:35

标签: php mysql regex

我有一个名为“location”的表,其中包含字段“area”。该字段可以包含各种类型的值。例如:

  

“1.0 / 5。”,“32.22 / 29。”,   “.0 / 2。”,“6.4 / 15。”,“没什么”等

我想创建一个正则表达式,只选择该字段中的第一个数字并将其加1。

因此,使用上面的示例,更新将导致:

  

“2”,“33”,“1”,“7”。

希望这是有道理的。

3 个答案:

答案 0 :(得分:3)

尝试此选择查询 -

SELECT TRUNCATE(SUBSTRING_INDEX(area, '/', 1), 0) + 1 FROM location

然后将其重写为UPDATE语句。

答案 1 :(得分:2)

1 + CAST(LEFT(area, LOCATE('/', area) - 1 ) AS SIGNED INTEGER)

1 + CAST(LEFT(area, LOCATE('/', area) - 1 ) AS DECIMAL)

两者都将返回相同的结果(整数)。


@jamester:你有没试过?:

SELECT 1 + CAST(LEFT(area, LOCATE('/', area) - 1 ) AS DECIMAL)
       AS result
FROM location

答案 2 :(得分:0)

试试这个:

preg_replace("/^[^0-9]*([0-9]+).*$/e","$1+1", $input);

..除非你想在MySQL查询中直接做到这一点