SQL sunucusunda evet / hayır boole alanını nasıl oluşturursunuz?


328

Bir alandan veya genel olarak dönüşüm gerçekleştirirken yes/noie Booleanalanı oluşturmak için en iyi uygulama access databasehangisidir?

Yanıtlar:


441

Eşdeğer bir BITalandır.

In SQLKullanmak 0ve 1(Access'te sadece evet olarak / hayır alanı) biraz alanını ayarlamak için. Management Studio'da yanlış / doğru değer olarak görüntülenir (en azından son sürümlerde).

ASP.NET üzerinden veritabanına erişilirken, alan bir boole değeri olarak gösterilir.


3
Ve bir Access veritabanında tabloyu bağlarsanız, true değeri -1 ve false değeri 0 değerine sahip olacaktır. En azından Access 2003'te. (Bu, bir müşterinin MSSQL veritabanına bağlanan kullanışlı sürümüm).
Henrik Erlandsson

2
Lütfen bunun tam olarak eşdeğer olmadığını unutmayın. Bir skaler işlev biraz döndürürse, yine de 0 veya 1 olup olmadığını sınamanız gerekir. Örneğin, dbo.IsReturnsBit (değer) = 1
Darren Griffith

@ D-Money: Evet, ancak karşılaştırmayı yalnızca değeri bir koşulda kullanmak istiyorsanız yapmanız gerekir. Sonuçtaki değeri kullanırsanız, karşılaştırma yapmamalısınız.
Guffa

Re Mgt Studio, eğer kopyalama + yapıştırma veri iseniz Doğru / Yanlış olarak, 1 veya 0 olarak değil gerekir.
gorlaz

110

BITVeri türü genellikle depolamak için kullanılır boolean(değerler 0için false, 1için true).


1
olduğu BITSQL standardında belirtilen? Onu bulmakta zorlanıyorum. Görebildiğim en yakın "Boole türü".
Temmuz'da asgs

1
Bitlerin ve booleanların anlambiliminin farklı olduğundan hiç endişe duyuyor musunuz?
Darth Egregious


20

BITAlanı kullanabilirsiniz .

Varolan bir tabloya bir BIT sütunu eklemek için SQL komutu şöyle görünecektir:

ALTER TABLE table_name ADD yes_no BIT

Yeni bir tablo oluşturmak istiyorsanız, bunu yapabilirsiniz: CREATE TABLE table_name (yes_no BIT).


19

Veri türünü kullanabilirsiniz bit

0'dan büyük eklenen değerler '1' olarak saklanacak

0'dan küçük eklenen değerler '1' olarak saklanır

'0' olarak eklenen değerler '0' olarak saklanacak

Bu, MS SQL Server 2012 Express için geçerlidir


1
0'dan küçük değerler ile ilgili ifadeden emin misiniz?
BiLaL

3
@BiLaL Bu, çoğu dilde yaygın bir davranıştır. 0false, herhangi bir 0sayı olmayan doğru. -1 için true değerinin varsayılan değer olması da yaygındı, çünkü imzalı ikili dosyada her bit 1 olarak ayarlanmıştır.
CJ Dennis

16

Bit kullanımını söyleyen cevaplar zaten var. Bu cevaplara daha fazlasını ekleyeceğim.

Boole değerlerini temsil etmek için bit kullanmalısınız .

MSDN makalesinden açıklamalar.

Bit değeri 1, 0 veya NULL alabilir.

SQL Server Veritabanı Altyapısı, bit sütunlarının depolanmasını optimize eder. Bir tabloda 8 veya daha az bit sütunu varsa, sütunlar 1 bayt olarak saklanır. 9'dan 16 bit'e kadar sütun varsa, sütunlar 2 bayt olarak depolanır vb.

TRUE ve FALSE dize değerleri bit değerlerine dönüştürülebilir: TRUE 1'e ve FALSE 0'a dönüştürülür.

Bit'e dönüştürmek, sıfır olmayan herhangi bir değeri 1'e yükseltir.

Referans

Not: Değerleri yalnızca veri türünde 1 ve 0 olarak tutmak iyi bir uygulamadır NOT NULL

Bit, 1, 0 ve NULL değerlerine sahip olduğundan. Bunun için doğruluk tablosuna bakın. Değerleri buna göre planlayın. Bit veri türü için NULL değerine izin vererek karışıklık ekleyebilir.

resim açıklamasını buraya girin

Referans


15

Tablo oluştururken örnek kullanım:

[ColumnName]     BIT   NULL   DEFAULT 0

12

BITAlanı kullanabilirsiniz

Yeni tablo oluşturmak için:

CREATE TABLE Tb_Table1
(
ID              INT,
BitColumn       BIT DEFAULT 1
)

Mevcut Tabloya Sütun Ekleme:

ALTER TABLE Tb_Table1 ADD BitColumn  BIT DEFAULT 1

Kayıt eklemek için:

INSERT Tb_Table1 VALUES(11,0)

9

biten basit olacak ve en az yer kaplayacak. "Y / N" ile karşılaştırıldığında çok ayrıntılı değil ama onunla iyiyim.


4
Sanırım daha iyi - Y == y ve N = n için endişelenmenize gerek yok, saf doğru veya yanlış. Niyet tamamen açıktır ve tek karakter alanlarının davet ettiği "özel" durumlar yoktur :)
Rob Grant

5

biten uygun seçenektir. Aksi takdirde bir zamanlar intbu amaçla kullandım. 1için true& 0için false.


2
Normalde False için 0 ve True için sıfır olmayan kullanılır.
Edu

2
çok fazla lezzet var ya da gerçek iyi bir politikacı söyleyebilir: D
Buda Florin

1

Herhangi bir sürümün SQL Server Management Studio'da BITveri türü olarak kullanın

size Trueveya FalseDeğer seçenekleri sunacak . Yalnızca 1veya 0sonra kullanmak istediğinizde bu yöntemi kullanabilirsiniz:

CREATE TABLE SampleBit(
    bar int NOT NULL CONSTRAINT CK_foo_bar CHECK (bar IN (-1, 0, 1))
)

Ama kesinlikle EN İYİ Seçenek BITolarak tavsiye edeceğim . Umarım birisine yardım eder.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.