首页 > 数据库 > mysql教程 > 如何在 T-SQL 中安全地将 NVARCHAR 字符串转换为整数,处理非数字值?

如何在 T-SQL 中安全地将 NVARCHAR 字符串转换为整数,处理非数字值?

DDD
发布: 2024-12-28 08:12:13
原创
598 人浏览过

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
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板