使用使用者定義函數從 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
函數處理潛在的空值和前導/尾隨空格。
進一步增強(未來更新):將在未來的更新中添加對此功能的更詳細說明和潛在改進。
以上是如何使用 SQL 使用者定義函數從字串中提取數字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!