Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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视图不接受子类_Sql_Sql Server_Tsql - Fatal编程技术网

SQL视图不接受子类

SQL视图不接受子类,sql,sql-server,tsql,Sql,Sql Server,Tsql,我需要从表中的字符串字段中获取视图中的布尔字段。如果字符串已填充,则布尔字段应为True: SELECT (MasterId IS NOT NULL) AS HasMaster FROM entries 但是,这会导致错误: 关键字“IS”附近的语法不正确 为什么会这样?如何修复?试试这个 SELECT (CASE WHEN MasterId IS NOT NULL THEN 1 ELSE 0 END) AS HasMaster FROM entries SQL Server中没有布尔值

我需要从表中的字符串字段中获取视图中的布尔字段。如果字符串已填充,则布尔字段应为
True

SELECT (MasterId IS NOT NULL) AS HasMaster FROM entries
但是,这会导致错误:

关键字“IS”附近的语法不正确

为什么会这样?如何修复?

试试这个

SELECT (CASE WHEN MasterId IS NOT NULL THEN 1 ELSE 0 END) AS HasMaster 
FROM  entries
SQL Server中没有布尔值,因此您可以在这里的
CASE
表达式中使用
'0'
'1'

试试这个

SELECT (CASE WHEN MasterId IS NOT NULL THEN 1 ELSE 0 END) AS HasMaster 
FROM  entries

SQL Server中没有布尔值,因此您可以在这里的
CASE
表达式中使用
'0'
'1'

尝试以下代码:

SELECT CAST(CASE WHEN MasterId IS NULL THEN 0 ELSE 1 END AS BIT) [HasMaster]
FROM entries

请尝试以下代码:

SELECT CAST(CASE WHEN MasterId IS NULL THEN 0 ELSE 1 END AS BIT) [HasMaster]
FROM entries

问题:我需要从表中的字符串字段中获取视图中的布尔字段。如果字符串已填充,则布尔字段应为True

回答:使用
case

select case when MasterId is null then 0 else 1 end
from table_name

问题:我需要从表中的字符串字段中获取视图中的布尔字段。如果字符串已填充,则布尔字段应为True

回答:使用
case

select case when MasterId is null then 0 else 1 end
from table_name

您需要通过case expression进行检查。SQL SERVER没有布尔类型。尝试
CASE WHEN blah然后1 ELSE 0 END
尝试google CASE WHEN statement SQL有布尔表达式,但这些表达式永远不能用于需要值的地方,只能在条件子句中使用(
IF
where
CASE
,等等)。是的,这是语言中的一个缺陷。您需要通过大小写表达式进行检查。SQL SERVER没有布尔类型。尝试
CASE WHEN blah然后1 ELSE 0 END
尝试google CASE WHEN statement SQL有布尔表达式,但这些表达式永远不能用于需要值的地方,只能在条件子句中使用(
IF
where
CASE
,等等)。是的,这是语言中的一个缺陷。严格来说,
0
1
不是布尔值-至少在SQL标准中不是。但是,由于SQL Server不支持布尔值,这是一个解决方法。提示,不要重复回答中的问题,答案就足够了。youtube链接有什么相关性?我假设这是你的,你想发垃圾邮件?严格来说,
0
1
不是布尔值-至少在SQL标准中不是。但是,由于SQL Server不支持布尔值,这是一个解决方法。提示,不要重复回答中的问题,答案就足够了。youtube链接有什么相关性?我猜这是你的,你想发垃圾邮件?