SQL Server Exists возвращает тип - PullRequest
0 голосов
/ 12 мая 2018

Что функция SQL Server Exists возвращает как тип?

Имеет ли Exists концептуальный тип возврата?

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

Почему это не работает?

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

Exists указывает подзапрос для проверки существования строк и возвращает логическое значение (True, если какая-либо строка существует, иначе false). Документы Microsoft Таким образом, ваш код должен быть

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

Это вернет все строки из таблицы 'tableName' IF любой из строкимеет значение columnName как theValue% ELSE ни одна из строк не будет возвращена.

0 голосов
/ 12 мая 2018

Как задокументировано в BOL

Типы результатов

Boolean

Он имеет тип возврата логический, но этопросто внутренний тип данных, в настоящее время вы не можете объявить столбцы или переменные этого типа данных.

Или используйте его для сравнения - даже с другим логическим значением.

where exists(select 1) = exists(select 1)

Также не удается.

SQL Server пока не реализует тип логического типа SQL Standard - ближайшийэквивалент bit, но это не истинное логическое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...