MySQL の英数字文字列から数値を抽出する
データベース プログラミングでは、非構造化文字列または混合型文字列から特定のデータを抽出するのが一般的なタスクです。 MySQL は、数値を文字列から分離する機能など、この目的のためにさまざまな関数とテクニックを提供します。
文字列から数値を抽出する 1 つの方法は、MySQL のキャスト機能を利用することです。 CAST() 関数を使用すると、数値以外の文字を破棄して、文字列を暗黙的に数値型に変換できます。たとえば、CAST('1234abc' AS UNSIGNED) は 1234 を返します。
もう 1 つの方法は、カスタム関数を使用することです。入力文字列を反復処理し、各文字の数値をチェックし、数値を新しい文字列に連結する関数を定義することで、数値を抽出するための再利用可能なソリューションを作成できます。次の関数を考えてみましょう:
<code class="language-sql">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 = SUBSTR(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>
関数を定義した後、クエリ内でその関数を呼び出して、任意の文字列から数値を抽出できます。たとえば、次のクエリは数値 1234 を返します:
<code class="language-sql">SELECT ExtractNumber("abc1234def") AS number;</code>
以上がMySQL で英数字文字列から数字を抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。