在SQL Server 2008中将NVARCHAR转换为INT数据类型

时间:2016-12-05 13:40:38

标签: sql-server sql-server-2008 type-conversion aggregate-functions

我收到此错误消息: -

  

将nvarchar值'50AB'转换为数据类型int

时转换失败

在SQL Server 2008中运行以下查询时:

select 
    max(cast(substring(c.customername, 12, 4) as integer)) 
from customers c

请帮我解决我可以用来解决此问题的转换类型。我已经尝试使用Convert,但我仍然遇到同样的问题。

1 个答案:

答案 0 :(得分:1)

这是另一个逻辑,如果可能的话将列转换为INT,类似于2012年的TRY_CONVERT

案例条件会检查您的列不是的任何非数字。这是一个简短的方法,可以检查您的列是LIKE 是否包含任何字符或特殊字符。如果该列中除了数字之外还有其他内容,则转换不会完成。如果它只是数字(这是INT转换所需的数字),则转换完成。

SELECT
    IdField
    ,DataField
    ,CASE WHEN DataField NOT LIKE '%[^0-9]%' THEN CONVERT(int, DataField) END New_Column
FROM #SampleData