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

pu3pd22g  于 2021-08-04  发布在  Java
关注(0)|答案(1)|浏览(391)

我有以下问题:
我有一个表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 (case when isnumeric(Description) = 1 then cast(Description as int) end)
FROM   ArticleDescription

但我得到以下信息:
meldung 245,ebene 16,status 1,zeile 20 fehler beim Konveriteren des varchar werts“dornbracht bogen-04240418900-00”,位于den int Datentp。

jvidinwx

jvidinwx1#

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

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

相关问题