SQL Server存在返回类型

时间:2018-05-12 13:37:43

标签: sql-server database oop

SQL Server Exists函数作为一种类型返回什么?

Exists是否有概念性的返回类型?

SELECT * 
FROM tableName 
WHERE EXISTS (SELECT * 
              FROM tableName 
              WHERE columnName LIKE 'theValue%') = 1

为什么这不起作用?

2 个答案:

答案 0 :(得分:6)

As documented in BOL

  

结果类型

     

布尔

它的返回类型为boolean,但这只是一个内部数据类型,目前您无法声明该数据类型的列或变量。

或者在比较中使用它 - 甚至与另一个布尔值相对应。

from rest_framework import viewsets

from myapp.models import SomeModel
from myapp.api.v1.serializers import SomeModelSerializer


class SomeModelViewSet(viewsets.ModelViewSet):
    serializer_class = SomeModelSerializer
    queryset = SomeModel.objects.prefetch_related(
        'related_table1',
        'related_table1__related_table2',
        'related_table3',
    )

也失败了。

SQL Server尚未实现SQL Standard布尔数据类型 - 最接近的等价物是where exists(select 1) = exists(select 1) ,但这不是真正的布尔值。

答案 1 :(得分:2)

Exists指定一个子查询来测试行是否存在并返回boolean(如果存在任何行,则返回True,否则返回false)。 Microsoft docs 所以你的代码应该是

/i

这将返回表格' tableName'中的所有行 IF 任何一行都有' columnName'作为' theValue%' ELSE 不会返回任何行。