Ответ 1
То, что у вас там, не будет возвращать строку вообще, если пользователь не существует. Вот что вам нужно:
SELECT CASE WHEN EXISTS (
SELECT *
FROM [User]
WHERE UserID = 20070022
)
THEN CAST(1 AS BIT)
ELSE CAST(0 AS BIT) END
Как вернуть логическое значение в SQL Select Statement?
Я пробовал этот код:
SELECT CAST(1 AS BIT) AS Expr1
FROM [User]
WHERE (UserID = 20070022)
и возвращайте значение TRUE
только в том случае, если UserID
существует в таблице. Я хочу, чтобы он возвращал значение FALSE
, если UserID
не существует в таблице. Большое вам спасибо.
То, что у вас там, не будет возвращать строку вообще, если пользователь не существует. Вот что вам нужно:
SELECT CASE WHEN EXISTS (
SELECT *
FROM [User]
WHERE UserID = 20070022
)
THEN CAST(1 AS BIT)
ELSE CAST(0 AS BIT) END
Возможно, что-то вроде этого:
SELECT CAST(CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END AS BIT)
FROM dummy WHERE id = 1;
Учитывая, что обычно 1 = true
и 0 = false
, все, что вам нужно сделать, это подсчитать количество строк и применить к boolean
.
Следовательно, ваш опубликованный код нуждается только в добавленной функции COUNT()
:
SELECT CAST(COUNT(1) AS BIT) AS Expr1
FROM [User]
WHERE (UserID = 20070022)
select CAST(COUNT(*) AS BIT) FROM [User] WHERE (UserID = 20070022)
Если count (*) = 0 возвращает false. Если count (*) > 0 возвращает true.