我想用我的Microsoft SQL Server 2017上的SQL CASE语句用空字符串替换所有大于或等于10的值。但是,我收到一条错误消息:
第15层状态1的第13行的消息102
'>'附近的语法不正确。
尽管存在一些与我的问题类似的问题,但我找不到专门回答我的问题的答案。例如,这里的问题how to use > = condition in sql case statement?。我也尝试过使用时态表进行动态查询,但这无济于事。
这是我的代码,其中包含表定义和测试数据以及正在运行的实际查询。
--table definition with two columns
declare @table table
(
person nvarchar(20),
digit decimal(10,2)
)
--insert test data with two records
insert into @table
select 'titimo', 9.51
union
select 'neriwo', 12.25
--the requirement is to not show the digit value if it is greater or equal to 10, but rather display an empty field.
--so, this is my select statement to meet this requirement that is failing
--with error message 'Incorrect syntax near >'
select
person,
case digit
when digit >= 10 then ''
else digit
end 'digit'
from @table
从上面的select语句中,我期望得到以下输出:
person digit
------ -----
titimo 9.51
neriwo
但是,由于我遇到的错误消息,未生成输出。
答案 0 :(得分:2)
您的case
中存在语法错误。此外,您无法混合使用数据类型,因此需要将digit
强制转换为varchar
或将''
即更改为null
。
select
person,
case
when digit >= 10 then ''
else cast(digit as varchar(20))
end 'digit'
from @table
答案 1 :(得分:1)
您的案件格式不正确-这是一个选项- (同样,您不能在同一列中选择文本和数字-因此我将您的数字转换为文本...进行调整以满足您的需求)
select
person,
case when digit >=10 then ''
else CONVERT(VARCHAR(10), digit)
end 'digit'
from @table