~ (Bit Düzeyinde DEĞİl) (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnaliz Platformu Sistemi (PDW)Microsoft Fabric'teki SQL analiz uç noktasıMicrosoft Fabric'teki ambarMicrosoft Fabric'teki SQL veritabanı

Bir tamsayı değeri üzerinde bit düzeyinde mantıksal NOT işlem gerçekleştirir.

Transact-SQL söz dizimi kuralları

Syntax

~ expression

Arguments

expression

Tamsayı veri türü kategorisi, bit veya ikili ya da varbinary veri türlerinin veri türlerinden herhangi birinin geçerli ifadeleri. ifadesi , bit düzeyinde işlem için ikili sayı olarak değerlendirilir.

Note

Bit düzeyinde bir işlemde yalnızca bir ifadeikili veya varbinary veri türünde olabilir.

Dönüş türleri

giriş değerleri int ise int.

giriş değerleri smallint ise smallint.

giriş değerleri tinyint ise tinyint.

giriş değerleri bit ise bit.

Remarks

~ Bit düzeyinde işleç, her biti sırayla alarak ifade için bit düzeyinde bir mantıksal NOT işlem gerçekleştirir. İfadenin0değeri varsa, sonuç kümesindeki bitler olarak 1ayarlanır. Aksi takdirde, sonuçtaki bit değerine 0temizlenir. Başka bir deyişle, birler sıfırlara, sıfırlar ise bire değiştirilir.

Important

Herhangi bir bit düzeyinde işlem gerçekleştirdiğinizde, bit düzeyinde işlemde kullanılan ifadenin depolama uzunluğu önemlidir. Değerleri depolarken aynı sayıda bayt kullanmanızı öneririz. Örneğin, 5'in ondalık değerinin tinyint, smallint veya int olarak depolanması, farklı bayt sayılarıyla depolanan bir değer üretir: tinyint verileri 1 bayt kullanarak depolar; smallint verileri 2 bayt kullanarak depolar ve int verileri 4 bayt kullanarak depolar. Bu nedenle, int ondalık değeri üzerinde bit düzeyinde bir işlem gerçekleştirmek, özellikle ~ (bit düzeyinde NOT) işleci kullanıldığında doğrudan ikili veya onaltılık çeviri kullananlardan farklı sonuçlar üretebilir. Bit düzeyinde NOT işlem daha kısa uzunlukta bir değişkende gerçekleşebilir. Bu durumda, daha kısa uzunluk daha uzun bir veri türü değişkenine dönüştürüldüğünde, üst 8 bitteki bitler beklenen değere ayarlanamayabilir. Daha küçük veri türü değişkenini daha büyük veri türüne dönüştürmenizi ve ardından sonuç üzerinde işlemi gerçekleştirmenizi NOT öneririz.

Examples

Aşağıdaki örnek, değerleri depolamak için int veri türünü kullanarak bir tablo oluşturur ve iki değeri tek bir satıra ekler.

CREATE TABLE bitwise
(
    a_int_value INT NOT NULL,
    b_int_value INT NOT NULL
);
GO

INSERT bitwise
VALUES (170, 75);
GO

Aşağıdaki sorgu ve b_int_value sütunlarında bit düzeyinde NOTa_int_value gerçekleştirir.

SELECT ~a_int_value AS NotA,
       ~b_int_value AS NotB
FROM bitwise;

Sonuç kümesi aşağıdadır.

NotA   NotB
-----  -----
-171   -76

170 'in ikili gösterimi (a_int_value veya A) şeklindedir 0000 0000 0000 0000 0000 0000 1010 1010. Bu değer üzerinde bit düzeyinde NOT işlem gerçekleştirildiğinde ondalık -171 olan ikili sonuç 1111 1111 1111 1111 1111 1111 0101 0101elde edilir. 75'in ikili gösterimi şeklindedir 0000 0000 0000 0000 0000 0000 0100 1011. Bit düzeyinde NOT işlemin gerçekleştirilmesi ondalık -76 olan değerini üretir 1111 1111 1111 1111 1111 1111 1011 0100.

 (~A)
         0000 0000 0000 0000 0000 0000 1010 1010
         ---------------------------------------
         1111 1111 1111 1111 1111 1111 0101 0101
(~B)
         0000 0000 0000 0000 0000 0000 0100 1011
         ---------------------------------------
         1111 1111 1111 1111 1111 1111 1011 0100