在 T-SQL 中,将 nvarchar 字符串转换为整数对于数据操作至关重要。但是,当遇到非数字字符时,此类转换可能会失败。这就需要优雅地处理转换错误。
CASE WHEN 表达式提供了一种强大的机制来处理这种情况。语法如下:
CASE WHEN ISNUMERIC(@text) = 1 THEN CAST(@text AS INT) ELSE NULL END
其工作原理如下:
此方法可确保如果从字符串到整数的转换成功,则返回正确的整数值。但是,如果由于非数字字符导致转换失败,则会返回 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() 函数提供一种检查数值的便捷方法,重要的是要了解它限制:
尽管有这些限制,CASE WHEN with ISNUMERIC() 和 CAST() 提供了一种实用的解决方案,用于将字符串转换为整数并在 T-SQL 中处理非数字情况。
以上是如何在 T-SQL 中安全地将 NVARCHAR 字符串转换为整数,处理非数字值?的详细内容。更多信息请关注PHP中文网其他相关文章!