print @T & @F
Kembali 0
& adalah operator Bitwise AND .
Operator & bitwise melakukan logika bitwise AND antara dua ekspresi, masing-masing mengambil bit yang sesuai untuk kedua ekspresi. Bit dalam hasil diatur ke 1 jika dan hanya jika kedua bit (untuk bit saat ini sedang diselesaikan) dalam ekspresi input memiliki nilai 1; jika tidak, bit dalam hasil diatur ke 0.
Dalam kasus Anda @T & @Fmemutuskan untuk1 & 0 dan mengembalikan hasil tipe data BITdengan nilai0
Ketika diteruskan ke PRINToperator, bithasil ini secara implisit dilemparkan ke string dan hasilnya dihasilkan ke klien.
print @T and @F
Cukup banyak yang salah dengan itu.
AND
Menggabungkan dua ekspresi Boolean dan mengembalikan TRUE ketika kedua ekspresi TRUE
bittidak sama dengan boolean. Mereka tidak dapat dipertukarkan dan SQL Server tidak akan secara implisit dilemparkanbit ke tipe data boolean bila diperlukan (SQL Server tidak mengimplementasikan tipe data SQL Boolean.).
Jadi, Anda perlu menggunakan ekspresi seperti
@T = 'TRUE' AND @F = 'TRUE'
dari pada
@T and @F
Meski begitu masalah Anda belum selesai - PRINTtoh tidak menerima ekspresi boolean. Anda dapat menggunakan ekspresi CASEseperti di bawah ini.
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