Sql server 2005 在sql server中将varchar值转换为数据类型位时,转换失败
这里我尝试将一个位值转换为varchar,我在MS sql server中尝试此查询Sql server 2005 在sql server中将varchar值转换为数据类型位时,转换失败,sql-server-2005,Sql Server 2005,这里我尝试将一个位值转换为varchar,我在MS sql server中尝试此查询 CASE WHEN cast(ISNULL(O.isTerminated,0)as varchar) = 1 THEN 'Yes' ELSE '' END AS isTerminated. 将varchar值“是”转换为数据类型位时出现错误“转换失败” 此问题的解决方案是什么。此错误不是由您正在显示的语句引起的,而是由您随后对您的注册的别名所做的操作引起的 您的陈述不会抛出任何错误。 DECLARE @i
CASE WHEN cast(ISNULL(O.isTerminated,0)as varchar) = 1 THEN 'Yes' ELSE '' END AS isTerminated.
将varchar值“是”转换为数据类型位时出现错误“转换失败”
此问题的解决方案是什么。此错误不是由您正在显示的语句引起的,而是由您随后对您的
注册的别名所做的操作引起的
您的陈述不会抛出任何错误。
DECLARE @isTerminated BIT = 1
SELECT CASE WHEN CAST(ISNULL(@isTerminated, 0) AS VARCHAR) = 1
THEN 'yes'
ELSE ''
END AS isTerminated
DECLARE @isTerminated BIT = 1
SELECT *
FROM (SELECT CASE WHEN CAST(ISNULL(@isTerminated, 0) AS VARCHAR) = 1
THEN 'yes'
ELSE ''
END AS isTerminated) t
WHERE isTerminated = 1 -- isTerminated is a VARCHAR at this point
但将别名isTerminated
视为位
。
DECLARE @isTerminated BIT = 1
SELECT CASE WHEN CAST(ISNULL(@isTerminated, 0) AS VARCHAR) = 1
THEN 'yes'
ELSE ''
END AS isTerminated
DECLARE @isTerminated BIT = 1
SELECT *
FROM (SELECT CASE WHEN CAST(ISNULL(@isTerminated, 0) AS VARCHAR) = 1
THEN 'yes'
ELSE ''
END AS isTerminated) t
WHERE isTerminated = 1 -- isTerminated is a VARCHAR at this point
为什么要将位
强制转换为varchar
。你能做到这一点吗:
CASE WHEN ISNULL(O.isTerminated,0) = 1 THEN 'Yes' ELSE '' END AS isTerminated
编辑
在尝试这个例子时
DECLARE @T TABLE(isTerminated BIT)
INSERT INTO @T
VALUES(1),(NULL),(0)
SELECT
CASE WHEN ISNULL(O.isTerminated,0) = 1 THEN 'Yes' ELSE '' END AS isTerminated
FROM
@T AS O
与你的案件陈述。我不会修改错误。您是否遗漏了任何细节?这段特定代码中没有任何内容会导致上述错误。我认为您应该显示该代码段所属的查询。“isTerminated”列的数据类型是什么?isTerminated column的数据类型是“bit”。您是否在where子句中使用isTerminated
列?像这样的isTerminated='Yes'
?在where子句中,您引用的表列是位,而不是列别名。我以前也尝试过,同样的错误也出现了,这就是我使用cast的原因。我们是否可以使用convert解决此问题?@user1352703:更新了应答实际上它是我存储过程的一部分,是否要在此处发布存储过程。。。?