Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 在sql server中将varchar值转换为数据类型位时,转换失败_Sql Server 2005 - Fatal编程技术网

Sql server 2005 在sql server中将varchar值转换为数据类型位时,转换失败

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

这里我尝试将一个位值转换为varchar,我在MS sql server中尝试此查询

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:更新了应答实际上它是我存储过程的一部分,是否要在此处发布存储过程。。。?