例如,
我有一个数据集,如下所示:
asdf1234asdf
1235asdfasdf
asdfasdfef489
我该如何选择才能获得如下结果?
1234
1235
489
如果您的MySQL版本支持它,请创建一个函数并使用诸如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;
希望这可以帮助!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句