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 & @F
etmek giderir 1 & 0
veri türü bir sonucu ve getiri böylece BIT
değerle0
PRINT
Operatöre iletildiğinde bu bit
sonuç ö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
bit
boole ile aynı değildir. Değiştirilemezler ve SQL Server bit
gerektiğ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 - PRINT
yine de boole ifadesini kabul etmiyor. İfadeyi CASE
aş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