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

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

我有以下问题:
我有一个表articledescription,列如下:

  1. ID (int) Description (varchar(max))
  2. 1 Muller Bogen, chrome-14440416700-55
  3. 2 Muller Bogen, chrome-14440416700-55
  4. 3 Muller Geruchverschluss 1 1/4¨, black-11188870-00
  5. Muller Ma.02 Waschtisch-Wand-Einhandbatterie ohne Ablaufgarnitur, white-12345678-08

我只想将列描述的数据类型转换为int。
我试过:

  1. SELECT (case when isnumeric(Description) = 1 then cast(Description as int) end)
  2. 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#

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

  1. declare @foo table(
  2. ID int,
  3. Description varchar(20) null
  4. )
  5. insert into @foo
  6. values(1,'one')
  7. ,(2,'2')
  8. ,(3,'')
  9. ,(4,null)
  10. select
  11. ID,
  12. CASE WHEN ISNUMERIC(Description) = 1 then CAST(Description as INT) ELSE null END as [Parsed Description]
  13. from @foo

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

  1. select
  2. ID,
  3. CAST(Description as INT) as parsed_pescription
  4. from @foo foo
  5. where ISNUMERIC(Description) = 1
展开查看全部

相关问题