例如,
我有一个数据集如下:
asdf1234asdf
1235asdfasdf
asdfasdfef489
我怎样才能选择这样我可以获得如下结果?
1234
1235
489
答案 0 :(得分:1)
如果您的MySQL版本支持create a function并使用regex等提取第一个数字:
DELIMITER $$
CREATE FUNCTION first_digits(str TEXT)
RETURNS TEXT
BEGIN
DECLARE ret TEXT DEFAULT '';
DECLARE chr TEXT DEFAULT '';
DECLARE i INT DEFAULT 1;
WHILE i < (LENGTH(str) + 1) DO
SET chr = SUBSTRING(str, i, 1);
IF chr REGEXP '[0-9]'
THEN SET ret = CONCAT(ret, chr);
ELSEIF ret != ''
THEN RETURN ret;
END IF;
SET i = i + 1;
END WHILE;
RETURN ret;
END;
$$
DELIMITER ;
然后只使用新创建的函数SELECT
first_digits();
所需列
SELECT first_digits('asdf1234asdf') num;
num
1234
要提取所有数字(不仅是第一个),请删除ELSEIF
部分并重命名digits
等功能。
删除该功能:
DROP FUNCTION IF EXISTS first_digits;
希望这有帮助!
答案 1 :(得分:0)
trim
:
SELECT TRIM(BOTH 'abcdefghijklmnopqrstuvwxyz' FROM word)
FROM (SELECT 'asdf1234asdf' AS word
UNION ALL
SELECT '1235asdfasdf'
UNION ALL
SELECT 'asdfasdfef489') t