如何在int中将列转换为varchar(max)

时间:2020-06-29 12:47:37

标签: sql sql-server tsql casting varcharmax

我有以下问题:

我有一个表ArticleDescription,其列如下:

SELECT (case when isnumeric(Description) = 1 then cast(Description as int) end)
FROM   ArticleDescription

我只想将Description列的数据类型转换为int。

我尝试过:

{{1}}

但是我收到以下消息:

Meldung 245,Ebene 16,Status 1,Zeile 20 Fetler beim Konvertieren des varchar-Werts“ Dornbracht Bogen-04240418900-00” in in da-Datentyp。

1 个答案:

答案 0 :(得分:0)

数据列必须全部属于同一类型。为此,您需要为其余各行提供一个可接受的替代值。

declare @foo table(
    ID int,
    Description varchar(20) null
)

insert into @foo
values(1,'one')
,(2,'2')
,(3,'')
,(4,null)

select 
ID,
CASE WHEN ISNUMERIC(Description) = 1 then CAST(Description as INT) ELSE null END as [Parsed Description]
from @foo

或者您可以添加where子句以仅选择数字描述

select 
ID,
CAST(Description as INT)  as parsed_pescription
from @foo foo
where ISNUMERIC(Description) = 1
相关问题