print @T & @F
İadeler 0
&olduğu Bitwise VE operatörü.
& Bitwise işleci, iki ifade arasında bir bitsel mantıksal AND gerçekleştirir ve her iki ifade için karşılık gelen her biti alır. Sonuçtaki bitler, yalnızca giriş ifadelerindeki her iki bitin (çözülmekte olan geçerli bit için) 1 değerine sahip olması durumunda 1 olarak ayarlanır; aksi takdirde, sonuçtaki bit 0 olarak ayarlanır.
Senin durumda @T & @Fetmek giderir 1 & 0veri türü bir sonucu ve getiri böylece BITdeğerle0
PRINTOperatöre iletildiğinde bu bitsonuç örtük olarak dizeye ve sonuç çıktısı istemciye verilir.
print @T and @F
Bunda çok yanlış var.
AND
İki Boole ifadesini birleştirir ve her iki ifade TRUE olduğunda TRUE döndürür
bitboole ile aynı değildir. Değiştirilemezler ve SQL Server bitgerektiğinde bir Boole veri tipine dolaylı olarak aktarılmaz (SQL Server, SQL Boolean veri tipini uygulamaz.).
Yani şöyle bir ifade kullanmanız gerekir
@T = 'TRUE' AND @F = 'TRUE'
onun yerine
@T and @F
O zaman bile sorunlarınız bitmedi - PRINTyine de boole ifadesini kabul etmiyor. İfadeyi CASEaşağıdaki gibi kullanabilirsiniz .
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