2013-03-11 22 views
5

Tablo bilgileri, SQL CE veritabanından alınan, daha sonra XML'ye aktarılacak olan C# içine koyulmaya hazır bir sorgu yazmaya çalışıyorum. Bir boole değeriyle 'IDENT' olarak adlandırılacak sütunlardan birine ihtiyacım var (kimlik sütununun açık olup olmadığını belirtmek için). şöyle Bunun içinSQL CE select deyiminde boolean (bit) değerini geri döndürme

, ben kontrol ediyorum AUTOINC_SEED sütun null ise:

Ancak select isnull(AUTOINC_SEED) as IDENT from information_schema.columns

bu sigara kimlik sütunlar için DOĞRU ve kimlik sütunlarının YANLIŞ döndürür! Seçme ifadesindeki boolean değerini tersine çevirmenin herhangi bir yolu var mı?

Düzenleme: Bu sorunu çözmek için bir durum açıklaması yapabileceğimin farkındayım, ancak SQL'de boolean (bit) değerlerini tersine çevirmeyi merak ettim.

+0

SQL Server Compact komut dosyası API'mı denediniz mi, tüm ilgili şema bilgilerini sizin için alabilir miyim? – ErikEJ

+0

@ErikEJ Bana bir bağlantı verebilir misiniz lütfen? –

+0

Bunu http://exportsqlce.codeplex.com adresinde bulabilirsiniz – ErikEJ

cevap

12

SQL Server'daki karat (^), bitwise exclusive OR işlecidir.

SELECT (1^[YourBitColumn]) as InverseBit 

Ben de kullanışlı SQL CE yok, ama SQL CE bu gibi görünüyor, çünkü ben aşağıdaki sorguyu inanıyoruz:

1^1 0 eşit olduğu için ve 1^0 sadece yapabileceği, 1 eşittir hile yapmalısınız:

+0

Üzgünüz sadece denemek için bir şansım vardı. Evet, carat çalıştı - ben 1 ile değiştirmek zorunda kaldım rağmen 0 gibi (0^AUTOINC_SEED) IDENT 'olarak seçin. Bu konuda yardıma ihtiyacım vardı, daha çok merak ettim. Her şeyden önce, bir 'case' ifadesi ile çözülebilir - ancak soruyu cevapladığım ve merakımı tatmin ettiğin için teşekkürler! –

+0

tilda gibi görünüyor hile (~) http://stackoverflow.com/a/177893/1579626 Ayrıca bakınız https://msdn.microsoft.com/en-us/library/ms173468.aspx –

İlgili konular