SQL初学者。错误=";转换varchar值时转换失败';4+';到数据类型int

SQL初学者。错误=";转换varchar值时转换失败';4+';到数据类型int,sql,sql-server,Sql,Sql Server,SQL的新特性,使用临时表。下面是一些让我感到困惑的代码。它不喜欢“4+”。它希望它是一个int,但我需要它说'4+' ''' ''此错误的原因是,CASE返回结果表达式中类型集合中的最高优先级类型,以及可选的ELSE结果表达式,基于。您有整数列#AB.ClaimCount,由于int数据类型具有更高的优先级,文本数据被隐式转换为整数 尝试: SELECT DISTINCT CASE WHEN #AB.ClaimCount > 3 THEN '4+'

SQL的新特性,使用临时表。下面是一些让我感到困惑的代码。它不喜欢“4+”。它希望它是一个int,但我需要它说'4+'

'''


''

此错误的原因是,
CASE
返回结果表达式中类型集合中的最高优先级类型,以及可选的
ELSE
结果表达式,基于。您有整数列
#AB.ClaimCount
,由于
int
数据类型具有更高的优先级,文本数据被隐式转换为整数

尝试:

SELECT DISTINCT
       CASE WHEN #AB.ClaimCount > 3 THEN '4+'
            WHEN #AB.ClaimCount is NULL THEN '0'
            ELSE CONVERT(varchar(11), #AB.ClaimCount) 
       END AS 'ClaimHistory'

此错误的原因是,
CASE
返回结果表达式中类型集合中的最高优先级类型,以及可选的
ELSE
结果表达式,基于。您有整数列
#AB.ClaimCount
,由于
int
数据类型具有更高的优先级,文本数据被隐式转换为整数

尝试:

SELECT DISTINCT
       CASE WHEN #AB.ClaimCount > 3 THEN '4+'
            WHEN #AB.ClaimCount is NULL THEN '0'
            ELSE CONVERT(varchar(11), #AB.ClaimCount) 
       END AS 'ClaimHistory'

你的查询不完整。。您在何处选择不同于??我假设新创建的temp表#ABA case表达式的返回值必须具有匹配的数据类型。试试
。。。ELSE cast(#AB.ClaimCount as varchar(11))END…
“4+”不是数值。如果你的意图是表示正整数值4,你应该只使用“4”。如果出于某种原因打算包含“+”,则不能将其存储为数字数据类型(改为使用基于文本的数据类型)。您的查询不完整。。您在何处选择不同于??我假设新创建的temp表#ABA case表达式的返回值必须具有匹配的数据类型。试试
。。。ELSE cast(#AB.ClaimCount as varchar(11))END…
“4+”不是数值。如果你的意图是表示正整数值4,你应该只使用“4”。如果出于某种原因您打算包含“+”,那么它不能存储为数字数据类型(改用基于文本的数据类型)。为什么
varchar(MAX)
?@Larnu,我同意,
varchar(11)
就足够了,基于
ClaimCount
的长度。为什么
varchar(MAX)
?@Larnu,我同意,
varchar(11)根据
ClaimCount的长度,
就足够了。