我收到此错误消息: -
将nvarchar值'50AB'转换为数据类型int
时转换失败
在SQL Server 2008中运行以下查询时:
select
max(cast(substring(c.customername, 12, 4) as integer))
from customers c
请帮我解决我可以用来解决此问题的转换类型。我已经尝试使用Convert
,但我仍然遇到同样的问题。
答案 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