Saya bertanya-tanya apakah mungkin melakukan sesuatu seperti ini (yang tidak berhasil):
select cast( (exists(select * from theTable where theColumn like 'theValue%') as bit)
Sepertinya itu bisa dilakukan, tetapi banyak hal yang harus bekerja dalam SQL tidak;) Saya telah melihat solusi untuk ini (PILIH 1 di mana ... Ada ...) tetapi sepertinya saya harus bisa hanya melemparkan hasil dari fungsi yang ada sebagai bit dan selesai dengannya.
sql
sql-server
tsql
jcollum
sumber
sumber
Ketika Anda melemparkan untuk menggigit
bit
memetakan langsung keboolean
dalam. Net datatypes, bahkan jika itu tidak benar-benar ...Ini terlihat mirip tetapi tidak memberikan baris (bukan nol) jika tidak ada yang cocok, jadi tidak sama
sumber
EXISTS
,COUNT
akan terus mencari dalam data untuk mencocokkan baris bahkan setelah menemukan yang pertama karena itu perlu mendapatkan penghitungan.Saya agak terlambat dalam uptake untuk ini; hanya tersandung di pos. Namun, inilah solusi yang lebih efisien & rapi daripada jawaban yang dipilih, tetapi harus memberikan fungsi yang sama:
sumber
Anda bisa menggunakan
IIF
danCAST
sumber
Anda juga dapat melakukan hal berikut:
Jika tidak ada nilai yang dimulai dengan 'theValue' ini akan menghasilkan nol (tidak ada catatan) daripada sedikit 0 sekalipun
sumber
Tidak itu tidak mungkin. Tipe data bit bukan tipe data boolean. Ini adalah tipe data integer yang bisa 0,1, atau NULL.
sumber
IF(@TRUE)
misalnya atau sebaliknya bisa ekspresi boolean dipaksa menjadi sedikit. (Dengan mis.SET @BitVariable = (1=1)
)Solusi lain adalah menggunakan
ISNULL
bersama-sama denganSELECT TOP 1 1
:sumber
Saya percaya ada hanya dapat digunakan di mana klausa, jadi Anda harus melakukan solusi (atau subquery dengan ada sebagai klausa mana). Saya tidak tahu apakah itu dianggap sebagai solusi.
Bagaimana dengan ini:
sumber
sumber