」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何從SQL中的字符串中提取數字值?

如何從SQL中的字符串中提取數字值?

發佈於2025-02-04
瀏覽:683

How Can I Extract Numeric Values from Strings in SQL?

從字符串中提取數值數據

在數據庫環境中,可能需要從字符串中提取嵌入的數值數據。考慮以下示例:

字符串 1: 003Preliminary Examination Plan   
字符串 2: Coordination005  
字符串 3: Balance1000sheet

期望的結果是從每個字符串中只提取數字:

字符串 1: 003
字符串 2: 005
字符串 3: 1000

為了在SQL中實現這一點,可以創建一個自定義用戶定義函數 (UDF):

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

這個UDF從本質上識別並刪除輸入字符串中的所有非數字字符。然後,它檢查結果字符串是否可以轉換為整數並相應地返回它。

要使用此函數,只需將其應用於相關列:

SELECT dbo.udf_GetNumeric(column_name) 
from table_name

這將只返回指定列中字符串的數字部分。對於提供的示例數據,結果將與預期值匹配:

003
005
1000

注意: 原代碼中的RETURN語句存在語法錯誤,已修正為更簡潔有效的RETURN ISNULL(TRIM(@strAlphaNumeric), '0'),避免了不必要的嵌套和類型轉換問題。 這個修正後的函數更清晰,也更易於理解和維護。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3