首頁 > 資料庫 > mysql教程 > 如何在 T-SQL 中安全地將 NVARCHAR 字串轉換為整數,處理非數字值?

如何在 T-SQL 中安全地將 NVARCHAR 字串轉換為整數,處理非數字值?

DDD
發布: 2024-12-28 08:12:13
原創
602 人瀏覽過

How Can I Safely Cast NVARCHAR Strings to Integers in T-SQL, Handling Non-Numeric Values?

T-SQL 轉換:使用預設值或NULL 處理將字串轉換為整數

在T-SQL 中,將nvarchar 字串轉換為整數對於資料操作至關重要。但是,當遇到非數字字元時,此類轉換可能會失敗。這就需要優雅地處理轉換錯誤。

CASE WHEN 表達式提供了一個強大的機制來處理這種情況。語法如下:

CASE WHEN ISNUMERIC(@text) = 1 THEN CAST(@text AS INT) ELSE NULL END
登入後複製

其工作原理如下:

  • ISNUMERIC(): 此函數評估nvarchar 字串@text 是否表示一個有效的數值。如果傳回 1 (true),則字串是數字。
  • CAST(): 如果 ISNUMERIC() 傳回 true,則使用 CAST() 將字串轉換為整數。否則,結果將設為 NULL。

此方法可確保如果從字串到整數的轉換成功,則傳回正確的整數值。但是,如果由於非數字字元導致轉換失敗,則會傳回 NULL 值。

範例程式碼

DECLARE @text AS NVARCHAR(10)

-- Numeric string
SET @text = '100'
SELECT @text, CASE WHEN ISNUMERIC(@text) = 1 THEN CAST(@text AS INT) ELSE NULL END

-- Non-numeric string
SET @text = 'XXX'
SELECT @text, CASE WHEN ISNUMERIC(@text) = 1 THEN CAST(@text AS INT) ELSE NULL END
登入後複製

限制

雖然 ISNUMERIC()函數提供一種檢查數值的便捷方法,重要的是要了解它限制:

  • 對於包含貨幣符號($)、小數分隔符號(,)、千位分隔符號(.)和算術符號(和-)的字串回傳true。
  • 它不區分整數和其他數字資料類型,例如小數。

儘管有這些限制,CASE WHEN with ISNUMERIC() 和CAST() 提供了一種實用的解決方案,用於將字串轉換為整數並在T-SQL 中處理非數字情況。

以上是如何在 T-SQL 中安全地將 NVARCHAR 字串轉換為整數,處理非數字值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板