Sql 如何在int中使用varchar(max)转换列

Sql 如何在int中使用varchar(max)转换列,sql,sql-server,tsql,casting,varcharmax,Sql,Sql Server,Tsql,Casting,Varcharmax,我有以下问题: 我有一个表ArticleDescription,列如下: ID (int) Description (varchar(max)) 1 Muller Bogen, chrome-14440416700-55 2 Muller Bogen, chrome-14440416700-55 3 Muller Geruchverschluss 1 1/4¨, bl

我有以下问题:

我有一个表ArticleDescription,列如下:

ID (int)            Description (varchar(max))
1                   Muller Bogen, chrome-14440416700-55
2                   Muller Bogen, chrome-14440416700-55
3                   Muller Geruchverschluss 1 1/4¨, black-11188870-00
                    Muller Ma.02 Waschtisch-Wand-Einhandbatterie ohne Ablaufgarnitur, white-12345678-08
我只想将列描述的数据类型转换为int

我试过:

SELECT(当isnumeric(Description)=1时的情况,然后cast(Description as int)end)
从文章描述
但我得到了以下信息:

Meldung 245,Ebene 16,状态1,Zeile 20 Fehler beim Konverteren des varchar在den int Datentyp的“Dornbracht Bogen-04240418900-00”


数据列必须全部为同一类型。为了做到这一点,您需要为其余行提供一个可接受的可选值

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

行没有数据类型。有点不清楚您的数据看起来像什么,您真正想要做什么。你能把数据以表格的形式存在并提供一个合适的数据库标签吗?旁白:这是出了名的。更合适。您希望从这个
Muller-Bogen,chrome-14440416700-55
中得到什么整数?建议的解决方案结果为空。我在varchar(max)中有一列“Description”作为数据类型。有这样的数据:Muller Ma.02 Waschtisch Wand Einhand Batterie ohne Ablaufgarnitur,white-12345678-08。如何将该数据转换为整数?将其转换为整数的最大障碍是找到一个模式,以便隔离要转换的部分。看看这个答案,看看它是否有用