【发布时间】:2009-06-18 06:01:32
【问题描述】:
这与上一个问题MSSQL: Change type of a column with numbers from varchar to int 类似,但在这种情况下,并非所有原始数据都可以成功地从 varchar 转换为 int。在这些情况下,我希望输出只是NULL。
例如,varchar 列中的传入值集将如下所示:{'123', '234', '345', 'A', '456'}。从 varchar 转换为 int 后,我希望该列包含值 {123, 234, 345, NULL, 456}。在实践中,我将有大约 99% 的成功率。
虽然一般的解决方案是理想的,但我使用的是 SQL Server 2005,需要在 Transact SQL 中执行更改。
编辑:IsNumeric 建议确实弥补了部分差距,但并不完整。例如,如果数据集包含数字但不包含整数数据,则 IsNumeric 修复不起作用(并且似乎没有 IsInteger)。特别是,以下集合不会转换 {'123.456', '$12'} 根据 SQL Server IsNumeric,它们都是数字,但不会转换为 Int。
【问题讨论】:
标签: sql sql-server tsql types