programing

SQL Select 문에 부울 값 반환

instargram 2023. 8. 10. 18:12
반응형

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을 반환하는 '존재'를 사용합니다.

쿼리는 다음과 같습니다.

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

count(*)인 경우 = 0은 false를 반환합니다.카운트(*) > 0이 true를 반환하는 경우.

저는 이렇게 합니다.

SELECT 1 FROM [dbo].[User] WHERE UserID = 20070022

부울로 보는 것은 null일 수 없습니다(적어도 에서).NET), 기본적으로 false로 설정해야 합니다. 그렇지 않으면 기본값이 True인 경우 직접 설정할 수 있습니다.그러나 1 = true이므로 null = false이며 추가 구문은 없습니다.

참고: 저는 Dapper를 제 마이크로폰으로 사용합니다. 저는 ADO도 동일하게 작동해야 한다고 생각합니다.

사용자 지정 열 이름을 추가하는 데 관심이 있는 사용자에게는 다음과 같은 이점이 있습니다.

CAST(
    CASE WHEN EXISTS ( 
           SELECT * 
           FROM mytable 
           WHERE mytable.id = 1
    ) 
    THEN TRUE 
    ELSE FALSE 
    END AS bool) 
AS "nameOfMyColumn"

일부 클라이언트에서는 이름의 대소문자를 구분하지 않는 경우 열 이름에서 큰따옴표를 생략할 수 있습니다.

저는 이것을 위해 @Chad의 대답을 약간 수정했습니다.

이와 유사한 또 다른 문제에 주목하십시오.조건이 충족되면 (1)을 반환하고 그렇지 않으면 빈 결과를 반환하는 SQL 쿼리 만들기.이 문제에 대한 해결책은 보다 일반적이며 위의 답변과 함께 사용하여 질문한 질문을 쉽게 달성할 수 있습니다.이 문제가 더 일반적이기 때문에 위에서 제시한 아름다운 해결책 외에도 해결책을 증명하고 있습니다.

SELECT DISTINCT 1 AS Expr1
FROM [User]
WHERE (UserID = 20070022)
DECLARE @isAvailable      BIT = 0;

IF EXISTS(SELECT 1  FROM [User] WHERE (UserID = 20070022))
BEGIN
 SET @isAvailable = 1
END

처음에는 isAvailable 부울 값이 0으로 설정되었습니다.

언급URL : https://stackoverflow.com/questions/10377781/return-boolean-value-on-sql-select-statement

반응형