[sql] SQL Select 문에서 부울 값 반환
SQL Select 문에서 부울 값을 반환하는 방법은 무엇입니까?
나는이 코드를 시도했다 :
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;
http://sqlfiddle.com/#!3/5e555/1
답변
주어진 일반적으로 1 = true
와0 = false
행 수를 계산하고로 캐스팅하기 만하면됩니다 boolean
.
따라서 게시 된 코드에는 COUNT()
추가 된 기능 만 필요합니다 .
SELECT CAST(COUNT(1) AS BIT) AS Expr1
FROM [User]
WHERE (UserID = 20070022)
답변
0 또는 1을 반환하는 ‘Exists’를 사용하십시오.
쿼리는 다음과 같습니다.
SELECT EXISTS(SELECT * FROM USER WHERE UserID = 20070022)
답변
select CAST(COUNT(*) AS BIT) FROM [User] WHERE (UserID = 20070022)
count (*) = 0이면 false를 반환합니다. count (*)> 0이면 true를 반환합니다.
답변
나는 이렇게한다 :
SELECT 1 FROM [dbo].[User] WHERE UserID = 20070022
부울로 보는 것은 null이 될 수 없으며 (최소한 .NET에서는) 기본값은 false로 설정되거나 기본값이 true이면 직접 설정할 수 있습니다. 그러나 1 = true이므로 null = false이며 추가 구문이 없습니다.
참고 : 저는 Dapper를 마이크로 마이크로로 사용합니다 .ADO가 동일하게 작동해야한다고 생각합니다.
답변
다른 동등한 문제를 확인하십시오. 조건이 충족되면 (1), 그렇지 않으면 빈 결과가 반환되는 SQL 쿼리 작성. 이 문제에 대한 해결책이 더 일반적이며 위의 답변과 함께 쉽게 사용하여 질문을 할 수 있습니다. 이 문제가 더 일반적이기 때문에 위에서 제시 한 아름다운 해결책 외에도 그 해결책을 제시하고 있습니다.
SELECT DISTINCT 1 AS Expr1
FROM [User]
WHERE (UserID = 20070022)