Sql server 无法将数据类型VARCHAR转换为INT

Sql server 无法将数据类型VARCHAR转换为INT,sql-server,Sql Server,我无法将数据类型VARCHAR更改为INT。谢谢你的帮助 CASE WHEN [Worksheet].[Worksheet].[PLC Cd] IS NOT NULL THEN [Worksheet].[Worksheet].[PLC Cd] ELSE (IF ([Pool Number] = 0) THEN ([Worksheet].[Revenue Worksheet].[Account ID]) ELS

我无法将数据类型
VARCHAR
更改为
INT
。谢谢你的帮助

CASE 
   WHEN [Worksheet].[Worksheet].[PLC Cd] IS NOT NULL
      THEN [Worksheet].[Worksheet].[PLC Cd]
      ELSE (IF ([Pool Number] = 0)
              THEN ([Worksheet].[Revenue Worksheet].[Account ID])
              ELSE (CAST([Pool Number], VARCHAR(7))))
END
  • Account\u ID
    数据类型为
    Varchar
  • Pool number
    数据类型为
    Int
我不想像上面提到的那样使用cast as
varchar
。我想将帐户ID转换为
INT

账户ID数据格式为:500-201-001

注意:由于
强制转换
,SQL Server会发出警告:

表达式中的类型转换(CONVERT(varchar(7),[RPT_REVENUE_WKS].[POOL_NO],0])可能会影响查询计划选择中的“CardinalityEstimate”


所以<代码>500-201-001不是数字。可能替换掉这些连字符,然后将其转换为replace(Account_ID,'-','')CASE当[Worksheet].[Worksheet].[PLC Cd]不为空时,则转换为[Worksheet].[Worksheet].[Pool Number]=0,则转换为[Worksheet].[Revenue Worksheet].cast(replace([Account ID],'-','')AS INT)ELSE(转换为INT)(转换为([池号],VARCHAR(7)))结束