Возвращаемое логическое значение в SQL Select Statement

Как вернуть логическое значение в SQL Select Statement?

Я пробовал этот код:

SELECT CAST(1 AS BIT) AS Expr1
FROM [User]
WHERE (UserID = 20070022)

и возвращайте значение TRUE только в том случае, если UserID существует в таблице. Я хочу, чтобы он возвращал значение FALSE, если UserID не существует в таблице. Большое вам спасибо.

Ответ 1

То, что у вас там, не будет возвращать строку вообще, если пользователь не существует. Вот что вам нужно:

SELECT CASE WHEN EXISTS (
    SELECT *
    FROM [User]
    WHERE UserID = 20070022
)
THEN CAST(1 AS BIT)
ELSE CAST(0 AS BIT) END

Ответ 2

Возможно, что-то вроде этого:

SELECT CAST(CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END AS BIT)
FROM dummy WHERE id = 1;

http://sqlfiddle.com/#!3/5e555/1

Ответ 3

Учитывая, что обычно 1 = true и 0 = false, все, что вам нужно сделать, это подсчитать количество строк и применить к boolean.

Следовательно, ваш опубликованный код нуждается только в добавленной функции COUNT():

SELECT CAST(COUNT(1) AS BIT) AS Expr1
FROM [User]
WHERE (UserID = 20070022)

Ответ 4

select CAST(COUNT(*) AS BIT) FROM [User] WHERE (UserID = 20070022)

Если count (*) = 0 возвращает false. Если count (*) > 0 возвращает true.