SQL server 字符串转数字
时间: 2025-01-13 07:50:38 浏览: 14
SQL Server 中字符串转换为数字的方法
在 SQL Server 中,可以使用多种方法来实现字符串到数字的转换。以下是几种常用的方式:
使用 CAST
或者 CONVERT
这两种函数都可以用来将一种数据类型的表达式显式转换为另一种数据类型。
SELECT CAST('123' AS INT);
SELECT CONVERT(INT, '456');
当遇到可能为空白或其他无法直接转换的情况时,可结合 CASE
表达式预先处理这些特殊情况[^4]。
对于那些包含非数字字符但在特定上下文中仍需尝试解析其数值部分的情形,则推荐采用更为稳健的做法——利用 TRY_CAST
, TRY_CONVERT
函数代替传统的 CAST/CONVERT
. 这两个新引入的功能会在遇到不可转换的数据时不抛出错误而是返回 NULL 值.
SELECT TRY_CAST('abc123' AS INT); -- 返回NULL因为整个字符串不是有效的整数表示形式.
SELECT TRY_CAST('123' AS INT); -- 成功并返回123
此外,在某些场景下如果知道确切的目标列应该只接受正整数而输入源可能存在负号或者其他干扰因素的话,还可以考虑通过自定义逻辑去除不需要的部分再做最终转换:
SELECT CASE WHEN ISNUMERIC(SUBSTRING(@inputString, PATINDEX('%[0-9.-]%', @inputString), LEN(@inputString))) = 1 THEN
CAST(SUBSTRING(@inputString, PATINDEX('%[0-9.-]%', @inputString), LEN(@inputString)) AS DECIMAL(18, 2))
ELSE NULL END;
这段代码片段展示了如何提取给定字符串中的第一个连续出现的合法实数序列,并将其安全地转化为十进制浮点数.