文字列から数値データを抽出します
データベース環境では、文字列から埋め込まれた数値データを抽出する必要がある場合があります。次の例を考えてみましょう:
<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 サイトの他の関連記事を参照してください。