답변:
print @T & @F
보고 0
&
는 IS 비트 단위 AND 연산자.
& 비트 단위 연산자는 두 표현식 사이에 비트 논리 AND를 수행하여 두 표현식에 해당하는 각 비트를 가져옵니다. 입력 표현식에서 (해결중인 현재 비트에 대한) 두 비트의 값이 모두 1 인 경우에만 결과의 비트가 1로 설정됩니다. 그렇지 않으면 결과의 비트가 0으로 설정됩니다.
귀하의 경우에 @T & @F
해결 하고 값 1 & 0
이있는 데이터 유형의 결과를 반환 BIT
합니다0
PRINT
연산자에 전달되면 이 bit
결과는 암시 적으로 문자열로 캐스트되고 결과는 클라이언트로 출력됩니다.
print @T and @F
그것에 꽤 많은 잘못이 있습니다.
두 부울 표현식을 결합하고 두 표현식이 모두 TRUE 인 경우 TRUE를 리턴합니다.
bit
부울과 동일하지 않습니다. 그것들은 상호 교환이 불가능하며 SQL Server는 bit
필요할 때 암시 적 으로 부울 데이터 유형으로 캐스트 하지 않습니다 (SQL Server는 SQL 부울 데이터 유형을 구현하지 않습니다).
따라서 다음과 같은 표현식을 사용해야합니다.
@T = 'TRUE' AND @F = 'TRUE'
대신에
@T and @F
그럼에도 불구하고 문제는 끝나지 않았습니다 PRINT
. 어쨌든 부울 식을 허용하지 않습니다. CASE
아래와 같이 식을 사용할 수 있습니다 .
PRINT CASE
WHEN (@T = 'TRUE' AND @F = 'TRUE') THEN 'True'
WHEN NOT (@T = 'TRUE' AND @F = 'TRUE') THEN 'False'
ELSE 'Unknown' -- SQL uses three valued logic
END