需要 SQL 逻辑

问题描述 投票:0回答:1

我有这个初始数据:

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
sql sql-server etl
1个回答
0
投票

我们需要为这种操作创建用户定义的函数。我们可以创建一个函数来从给定的字符串中单独获取数字并用于查找数字部分,例如

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');
© www.soinside.com 2019 - 2024. All rights reserved.