我有这个初始数据:
id | 评论 |
---|---|
1 | 1234_avc |
2 | 234_abc |
3 | avc_789 |
如何从 sql 中的
comment
列获取以下输出(数值)?
输出:
id | 评论 |
---|---|
1 | 1234 |
2 | 234 |
3 | 789 |
我尝试使用以下查询,但第三行不起作用。我需要一个简单的解决方案。
试用:
select id,Substring(Comment,1,charindex('_',comment)-1) as comment
from table_name
我们需要为这种操作创建用户定义的函数。我们可以创建一个函数来从给定的字符串中单独获取数字并用于查找数字部分,例如
DELIMITER $$
CREATE FUNCTION GetNumbersFromText(text VARCHAR(255))
RETURNS VARCHAR(255)
DETERMINISTIC
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE len INT;
DECLARE result VARCHAR(255) DEFAULT '';
DECLARE ch CHAR(1);
SET len = CHAR_LENGTH(text);
WHILE i <= len DO
SET ch = SUBSTRING(text, i, 1);
IF ch REGEXP '[0-9]' THEN
SET result = CONCAT(result, ch);
END IF;
SET i = i + 1;
END WHILE;
RETURN result;
END$$
DELIMITER ;
-- Example usage
SELECT GetNumbersFromText('abc123def456');