在数据类型中使用CASE语句

时间:2014-07-31 07:03:33

标签: sql sql-server

为什么会出现此错误?

代码:

declare @curr as varchar(10)
declare @var as numeric(10,5)

set @curr = 'RS'
set @var = 10.124523

SELECT 
    CAST(@var as numeric(17, CASE @curr WHEN 'RS' THEN 2 WHEN 'JPY' THEN 2 ELSE 4 END ) )

错误:

  

Msg 156,Level 15,State 1,Line 5
  关键字' CASE'附近的语法不正确。

2 个答案:

答案 0 :(得分:2)

不可能那样做。

在说明数据类型时,T-SQL不允许您使用表达式。您将需要执行动态sql,通过字符串连接或类似方法构建它。

答案 1 :(得分:1)

不确定您要实现的目标,但可能会使用if-else

declare @curr varchar(4)
declare @var numeric(17,5)

set @curr = 'rs'

if @curr = 'rs'
    select cast(@var as numeric(17,2)) var
else
    select cast(@var as numeric(17,2)) var