0
SELECT 'Some more(user) found = 50' REGEXP '\d+' as T;
+---+
| T |
+---+
| 1 |
+---+
1 row in set (0.00 sec)
我期待
50
什麼是正確的REGEXP選擇一個或多個數字?
SELECT 'Some more(user) found = 50' REGEXP '\d+' as T;
+---+
| T |
+---+
| 1 |
+---+
1 row in set (0.00 sec)
我期待
50
什麼是正確的REGEXP選擇一個或多個數字?
你需要一個函數:
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)
MySQL的正則表達式不包括最反斜槓快捷方式。
而不是\d
,請使用[0-9]
或[[:digit:]]
。
首先,在MySQL REGEXP中不支持'\ d'。其次,您不能使用REGEXP來獲取部分條目,它只會檢查條目是否包含某種模式。 –
如果您可以向我們展示更多數據,也許還有其他一些解決方法。 –
我有像例子中顯示的文字。我想知道是否有辦法從文本中提取數字,並將它們視爲數字。 – Sudheer