ユーザー定義関数を使用した SQL の文字列からの数値データの抽出
このガイドでは、SQL ユーザー定義関数 (UDF) を作成して文字列から数字のみを効率的に抽出する方法を説明します。 これは、データのクリーニングと操作における一般的なタスクです。
UDF の作成:
次の SQL コードは、文字列を入力として受け取り、抽出された数値部分を返す dbo.udf_GetNumeric
という名前の 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</code>
UDF の適用:
UDF が作成されたら、次の SELECT ステートメントを使用してテーブル内の列に適用します。
<code class="language-sql">SELECT dbo.udf_GetNumeric(column_name) AS ExtractedNumber FROM table_name;</code>
column_name
を文字列を含む列の実際の名前に置き換え、table_name
をテーブルの名前に置き換えます。 結果は、数値のみを含む新しい列 ExtractedNumber
になります。
例:
次のサンプル データについて考えてみましょう:
String 1 | String 2 | String 3 |
---|---|---|
003Preliminary Examination Plan | Coordination005 | Balance1000sheet |
UDF を適用すると、出力は次のようになります:
String 1 | String 2 | String 3 |
---|---|---|
003 | 005 | 1000 |
機能説明:
dbo.udf_GetNumeric
関数は、PATINDEX
を使用して最初の非数値文字を見つけます。 次に、STUFF
関数によってその文字が削除されます。このプロセスは、数字以外の文字がすべて削除され、数字だけが残るまで繰り返されます。 ISNULL
関数と TRIM
関数は、潜在的な null 値と先頭/末尾のスペースを処理します。
さらなる機能強化 (将来のアップデート): この機能のより詳細な説明と潜在的な改善点は、将来のアップデートで追加される予定です。
以上がSQL ユーザー定義関数を使用して文字列から数値を抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。