SQL初学者。错误=";转换varchar值时转换失败';4+';到数据类型int
SQL的新特性,使用临时表。下面是一些让我感到困惑的代码。它不喜欢“4+”。它希望它是一个int,但我需要它说'4+' '''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+'
''此错误的原因是,
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的长度,
就足够了。