为什么会出现此错误?
代码:
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'附近的语法不正确。
答案 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