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

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

Patricia Arquette
リリース: 2025-01-21 01:36:08
オリジナル
442 人が閲覧しました

How Can I Extract Numeric Values from Strings in SQL?

文字列から数値データを抽出します

データベース環境では、文字列から埋め込まれた数値データを抽出する必要がある場合があります。次の例を考えてみましょう:

<code>字符串 1: 003Preliminary Examination Plan   
字符串 2: Coordination005  
字符串 3: Balance1000sheet</code>
ログイン後にコピー

望ましい結果は、各文字列から数値のみを抽出することです:

<code>字符串 1: 003
字符串 2: 005
字符串 3: 1000</code>
ログイン後にコピー

これを SQL で実装するには、カスタム ユーザー定義関数 (UDF) を作成できます。

<code class="language-sql">CREATE FUNCTION dbo.udf_GetNumeric
(
  @strAlphaNumeric VARCHAR(256)
)
RETURNS VARCHAR(256)
AS
BEGIN
  DECLARE @intAlpha INT
  SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric)
  BEGIN
    WHILE @intAlpha > 0
    BEGIN
      SET @strAlphaNumeric = STUFF(@strAlphaNumeric, @intAlpha, 1, '' )
      SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric )
    END
  END
  RETURN ISNULL(TRIM(@strAlphaNumeric), '0')
END
GO</code>
ログイン後にコピー

この UDF は基本的に、入力文字列から数値以外の文字をすべて識別して削除します。次に、結果の文字列が整数に変換できるかどうかを確認し、それに応じてそれを返します。

この関数を使用するには、単に関連する列に適用するだけです:

<code class="language-sql">SELECT dbo.udf_GetNumeric(column_name) 
from table_name</code>
ログイン後にコピー

これは、指定された列の文字列の数値部分のみを返します。提供されたサンプル データの場合、結果は期待値と一致します:

<code>003
005
1000</code>
ログイン後にコピー

注: 元のコードの RETURN ステートメントには文法上のエラーが含まれていましたが、不要なネストや型変換の問題を回避するために、より簡潔で効果的な RETURN ISNULL(TRIM(@strAlphaNumeric), '0') に修正されました。 この改訂された機能はより明確で、理解しやすく、保守しやすくなっています。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート