Apakah mungkin untuk menyatakan 1 atau 0 sedikit ketika digunakan sebagai nilai bidang dalam pernyataan pilih?
misalnya
Dalam hal ini pernyataan (yang merupakan bagian dari pernyataan pilih) ICourseBased adalah tipe int.
case
when FC.CourseId is not null then 1
else 0
end
as IsCoursedBased
Untuk membuatnya menjadi tipe bit saya harus memberikan kedua nilai.
case
when FC.CourseId is not null then cast(1 as bit)
else cast(0 as bit)
end
as IsCoursedBased
Apakah ada cara singkat untuk mengekspresikan nilai sebagai tipe bit tanpa harus melakukan cast setiap waktu?
(Saya menggunakan MS SQL Server 2005)
sql
sql-server
tsql
bit
Damien McGivern
sumber
sumber
Anda dapat menambahkan potongan kedua sebagai definisi bidang untuk ICourseBased dalam tampilan.
sumber
Tidak, tetapi Anda bisa menggunakan seluruh ekspresi daripada sub-komponen dari ekspresi itu. Sebenarnya, itu mungkin membuatnya kurang mudah dibaca dalam kasus ini.
sumber
Sedikit lebih padat daripada gbn:
Dengan asumsi
CourseId
tidak nolCOALESCE
sepertiISNULL()
, tetapi mengembalikan non-Null pertama.Non-Zero
CourseId
akan mendapatkan tipe-cast ke 1, sedangkan nolCourseId
akan menyebabkan COALESCE mengembalikan nilai berikutnya, 0sumber
Jika Anda ingin kolom BIT dan BUKAN NULL, Anda harus meletakkan ISNULL sebelum CAST.
sumber
Sayangnya tidak ada. Anda harus memberikan setiap nilai secara individual.
sumber
Ekspresi yang digunakan dalam SELECT bisa berupa
sumber
case when ... else ... end
, kita masih harus menggunakan1
dan0
untuk tipe BIT.Nikmati ini :) Tanpa memberikan setiap nilai secara individual.
sumber