ホームページ >データベース >mysql チュートリアル >MySQL で英数字文字列から数値を抽出するにはどうすればよいですか?

MySQL で英数字文字列から数値を抽出するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-09 16:52:42158ブラウズ

How Can I Extract Numbers from Alphanumeric Strings in MySQL?

MySQL 文字列から数値を抽出する方法

MySQL で英数字文字列を扱う場合、場合によっては、その中の数字を抽出する必要があります。これはさまざまな方法で実現できます。

明示的な変換を使用する

文字列が数字で始まる場合は、CAST() 関数を使用するか先頭に 0 を追加して整数に変換できます。例:

<code class="language-sql">SELECT CAST('1234abc' AS UNSIGNED); -- 1234
SELECT '1234abc'+0; -- 1234</code>

カスタム関数を使用して数値を抽出する

文字列に数値以外の文字が含まれる可能性があるより複雑な場合には、数値のみを抽出するカスタム関数を作成できます。そのような関数の 1 つが次のとおりです:

<code class="language-sql">CREATE FUNCTION `ExtractNumber`(in_string VARCHAR(50)) 
RETURNS INT
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);
            IF sChar BETWEEN '0' AND '9' 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</code>

カスタム関数を適用する

関数を定義したら、それをクエリで使用して文字列から数値を抽出できます。例:

<code class="language-sql">SELECT ExtractNumber("abc1234def") AS number; -- 1234</code>

以上がMySQL で英数字文字列から数値を抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。