我有一个名为“location”的表,其中包含字段“area”。该字段可以包含各种类型的值。例如:
“1.0 / 5。”,“32.22 / 29。”, “.0 / 2。”,“6.4 / 15。”,“没什么”等
我想创建一个正则表达式,只选择该字段中的第一个数字并将其加1。
因此,使用上面的示例,更新将导致:
“2”,“33”,“1”,“7”。
希望这是有道理的。
答案 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查询中直接做到这一点