sql >> データベース >  >> RDS >> Mysql

mysqlの文字列から数字のみを取得するにはどうすればよいですか?

    文字列が数字で始まり、数字以外の文字が含まれている場合は、 CAST() 関数を作成するか、0を追加して暗黙的に数値に変換します :

    SELECT CAST('1234abc' AS UNSIGNED); -- 1234
    SELECT '1234abc'+0; -- 1234
    

    任意のから数値を抽出するには カスタムの関数 を追加できる文字列 これ のように :

    DELIMITER $$
    
    CREATE FUNCTION `ExtractNumber`(in_string VARCHAR(50)) 
    RETURNS INT
    NO SQL
    BEGIN
        DECLARE ctrNumber VARCHAR(50);
        DECLARE finNumber VARCHAR(50) DEFAULT '';
        DECLARE sChar VARCHAR(1);
        DECLARE inti INTEGER DEFAULT 1;
    
        IF LENGTH(in_string) > 0 THEN
            WHILE(inti <= LENGTH(in_string)) DO
                SET sChar = SUBSTRING(in_string, inti, 1);
                SET ctrNumber = FIND_IN_SET(sChar, '0,1,2,3,4,5,6,7,8,9'); 
                IF ctrNumber > 0 THEN
                    SET finNumber = CONCAT(finNumber, sChar);
                END IF;
                SET inti = inti + 1;
            END WHILE;
            RETURN CAST(finNumber AS UNSIGNED);
        ELSE
            RETURN 0;
        END IF;    
    END$$
    
    DELIMITER ;
    

    関数を定義したら、クエリで使用できます:

    SELECT ExtractNumber("abc1234def") AS number; -- 1234
    


    1. macOSにPostgreSQLをインストールする方法

    2. SQL、テーブル構造を更新する方法

    3. T-SQLのバグ、落とし穴、およびベストプラクティス–決定論

    4. CentOS7でMySQL8.0を使用してPHP5アプリケーションを実行する方法