Aracılığıyla paylaş


ARASINDA (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ı

Test etmek için bir aralık belirtir.

Transact-SQL söz dizimi kuralları

Syntax

test_expression [ NOT ] BETWEEN begin_expression AND end_expression

Arguments

test_expression

ifadesi, begin_expressionve end_expressiontarafından tanımlanan aralıkta test etmek için. test_expression hem begin_expression hem de end_expressionile aynı veri türü olmalıdır.

NOT

Koşulun sonucunun olumsuzlandığını belirtir.

begin_expression

Herhangi bir geçerli ifade. begin_expression hem test_expression hem de end_expressionile aynı veri türü olmalıdır.

end_expression

Herhangi bir geçerli ifade. end_expression hem test_expressionhem de begin_expressionile aynı veri türü olmalıdır.

AND

test_expressionbegin_expression ve end_expressiontarafından belirtilen aralık içinde olması gerektiğini belirten bir yer tutucu işlevi görür.

Dönüş türleri

Boolean

Remarks

BETWEEN, TRUE değeri begin_expression değerinden büyük veya buna eşitse ve end_expressiondeğerinden küçük veya buna eşitse döndürür.

NOT BETWEEN, TRUE değeri begin_expression değerinden küçükse veya end_expressiondeğerinden büyükse döndürür.

Özel kullanım aralığı belirtmek için büyüktür (>) ve küçüktür işleçlerini (<) kullanın. BETWEEN veya NOT BETWEEN koşuluna herhangi bir giriş NULLise, sonuç, bağlı parçaların sonuçlarına bağlıdır.

Aşağıdaki örnekte test_expression >= begin_expression AND test_expression <= end_expression, herhangi bir bölüm FALSE genel BETWEEN ifadesi FALSEolarak değerlendirilir. Aksi takdirde ifade UNKNOWNolarak değerlendirilir.

Examples

Bu makaledeki kod örnekleri, AdventureWorks2025 giriş sayfasından indirebileceğiniz AdventureWorksDW2025 veya örnek veritabanını kullanır.

A. ARADA KULLANIM

Aşağıdaki örnek, veritabanındaki veritabanı rolleri hakkında bilgi döndürür. İlk sorgu tüm rolleri döndürür. İkinci örnek, rolleri belirtilen BETWEEN değerleriyle sınırlamak için database_id yan tümcesini kullanır.

SELECT principal_id,
       name
FROM sys.database_principals
WHERE type = 'R';

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

principal_id name
------------  ----
0             public
16384         db_owner
16385         db_accessadmin
16386         db_securityadmin
16387         db_ddladmin
16389         db_backupoperator
16390         db_datareader
16391         db_datawriter
16392         db_denydatareader
16393         db_denydatawriter
SELECT principal_id,
       name
FROM sys.database_principals
WHERE type = 'R'
      AND principal_id BETWEEN 16385 AND 16390;
GO

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

principal_id name
------------  ----
16385         db_accessadmin
16386         db_securityadmin
16387         db_ddladmin
16389         db_backupoperator
16390         db_datareader

B. BETWEEN yerine > ve < kullanma

Aşağıdaki örnekte büyüktür (>) ve küçüktür (<) işleçleri kullanılır ve bu işleçler kapsayıcı olmadığından, önceki örnekte döndürülen 10 yerine dokuz satır döndürür.

SELECT e.FirstName,
       e.LastName,
       ep.Rate
FROM HumanResources.vEmployee AS e
     INNER JOIN HumanResources.EmployeePayHistory AS ep
         ON e.BusinessEntityID = ep.BusinessEntityID
WHERE ep.Rate > 27
      AND ep.Rate < 30
ORDER BY ep.Rate;
GO

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

 FirstName   LastName             Rate
 ---------   -------------------  ---------
 Paula       Barreto de Mattos    27.1394
 Janaina     Bueno                27.4038
 Dan         Bacon                27.4038
 Ramesh      Meyyappan            27.4038
 Karen       Berg                 27.4038
 David       Bradley              28.7500
 Hazem       Abolrous             28.8462
 Ovidiu      Cracium              28.8462
 Rob         Walters              29.8462

C. DEĞİl BETWEEN kullanma

Aşağıdaki örnek, 27aracılığıyla belirtilen 30 aralığının dışındaki tüm satırları bulur.

SELECT e.FirstName,
       e.LastName,
       ep.Rate
FROM HumanResources.vEmployee AS e
     INNER JOIN HumanResources.EmployeePayHistory AS ep
         ON e.BusinessEntityID = ep.BusinessEntityID
WHERE ep.Rate NOT BETWEEN 27 AND 30
ORDER BY ep.Rate;
GO

D. Tarih saat değerleriyle BETWEEN kullanma

Aşağıdaki örnek, datetime değerlerinin 20011212 ile 20020105(dahil) arasında olduğu satırları alır.

SELECT BusinessEntityID,
       RateChangeDate
FROM HumanResources.EmployeePayHistory
WHERE RateChangeDate BETWEEN '20011212' AND '20020105';

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

BusinessEntityID RateChangeDate
----------- -----------------------
3           2001-12-12 00:00:00.000
4           2002-01-05 00:00:00.000

Sorgudaki tarih değerleri ve sütununda depolanan RateChangeDate değerleri tarihin saat bölümü olmadan belirtildiğinden sorgu beklenen satırları alır. Zaman bölümü belirtilmezse varsayılan olarak 12:00'ye ayarlanır. 5 Ocak 2002'de saat 12:00'ye kadar olan bir zaman bölümü içeren satır, aralığın dışında olduğundan bu sorgu tarafından döndürülmüyor.