MySQL REGEXP选择数字

时间:2016-12-14 09:43:02

标签: mysql regex

SELECT 'Some more(user) found = 50' REGEXP '\d+' as T;

结果:

+---+
| T |
+---+
| 1 |
+---+
1 row in set (0.00 sec)

我期待

50

选择一个或多个数字的正确REGEXP是什么?

2 个答案:

答案 0 :(得分:0)

你需要一个功能:

DROP FUNCTION IF EXISTS STRIP_NON_DIGIT;
DELIMITER $$
CREATE FUNCTION STRIP_NON_DIGIT(input VARCHAR(255))
   RETURNS VARCHAR(255)
BEGIN
   DECLARE output   VARCHAR(255) DEFAULT '';
   DECLARE iterator INT          DEFAULT 1;
   WHILE iterator < (LENGTH(input) + 1) DO
      IF SUBSTRING(input, iterator, 1) IN ( '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' ) THEN
         SET output = CONCAT(output, SUBSTRING(input, iterator, 1));
      END IF;
      SET iterator = iterator + 1;
   END WHILE;
   RETURN output;
END
$$
DELIMITER ;

mysql> SELECT STRIP_NON_DIGIT('Some more(user) found = 50') AS n;
+------+
| n    |
+------+
| 50   |
+------+
1 row in set (0.00 sec)

答案 1 :(得分:0)

MySQL的正则表达式不包括大多数反斜杠快捷方式。

而不是\d,请使用[0-9][[:digit:]]