Aracılığıyla paylaş


durum (Transact-SQL)

Koşulların listesini değerlendirir ve birden çok olası sonuç ifade döndürür.

The durum ifade iki biçimi vardır:

  • Basit durum deyimi bir ifadeye karşılaştıran bir küme sonucu belirlemek için basit bir ifade.

  • Aranan durum ifade bir dizi sonucu belirlemek için Boole deyimlerini değerlendirir.

İsteğe bağlı olan ELSE argüman her iki biçimini destekler.

durum, herhangi bir ifade veya yan tümcesini geçerli bir ifade veren kullanılabilir.Örneğin, durum deyimi SELECT, UPDATE, DELETE ve küme ve select_list gibi yan tümceler ın, WHERE, ORDER BY ve HAVING kullanabilirsiniz.

Topic link iconTransact-SQL sözdizimi kuralları

Simple CASE expression: 
CASE input_expression 
     WHEN when_expression THEN result_expression [ ...n ] 
     [ ELSE else_result_expression ] 
END 
Searched CASE expression:
CASE
     WHEN Boolean_expression THEN result_expression [ ...n ] 
     [ ELSE else_result_expression ] 
END

Bağımsız değişkenler

  • input_expression
    Is the expression evaluated when the simple CASE format is used.input_expression is any valid expression.

  • when_expression
    Is a simple expression to which input_expression is compared when the simple CASE format is used.when_expression is any valid expression.Veri türleriinput_expressionve herwhen_expressionaynı olması gerekir veya olmalıdır örtük dönüştürme.

  • result_expression THEN
    Is the expression returned when input_expression equals when_expression evaluates to TRUE, or Boolean_expression evaluates to TRUE.result expression is any valid expression.

  • ELSE else_result_expression
    Herhangi bir karşılaştırma işlemi TRUE olarak değerlendirilir ifade verdi.If this argument is omitted and no comparison operation evaluates to TRUE, CASE returns NULL.else_result_expression is any valid expression.Veri türlerielse_result_expressionve tümresult_expressionaynı olması gerekir veya olmalıdır örtük dönüştürme.

  • Boolean_expression
    Is the Boolean expression evaluated when using the searched CASE format.Boolean_expression is any valid Boolean expression.

Dönüş Türleri

Verir en yüksek öncelik türünden küme türlerinde,result_expressionsve isteğe bağlıelse_result_expression.Daha fazla bilgi için bkz:Veri türü önceliği (Transact-SQL).

Dönüş değerleri

Basit durum ifade:

Basit durum deyimi ilk ifade her zaman yan tümce için eşdeğer deyim karşılaştırarak çalışır.Bu ifade s eşdeğerdir, ifade sonra da yan tümcesinde döndürülür.

  • Yalnızca bir eşitlik denetimi sağlar.

  • Sonucuinput_expression, daha sonra belirtilen sırada değerlendirir veinput_expression=when_expressionher zaman yan tümce.

  • Verirresult_expressionilkinput_expression=when_expressionsonucu TRUE.

  • Yokinput_expression=when_expressionTRUE olarak değerlendirilirSQL Server Database Enginedönerelse_result_expressionbir ELSE yan tümce belirtilmezse veya NULL değeri yok ELSE yan tümce varsa.

durum arama ifadesi:

  • Evaluates sırada belirtilenBoolean_expressionher zaman yan tümce.

  • Verirresult_expressionilkBoolean_expressionsonucu TRUE.

  • YokBoolean_expressionTRUE olarak değerlendirilirDatabase Enginedönerelse_result_expressionbir ELSE yan tümce belirtilmezse veya NULL değeri yok ELSE yan tümce varsa.

Remarks

SQL Server yalnızca 10 durum ifadelerde iç içe geçme düzeyi sağlar.

durum ifade, Transact-SQL deyimleri, ifade bloğu, kullanıcı tanımlı fonksiyonlar ve saklı yordamlar çalışma akışını denetlemek için kullanılamaz.Akış denetimi yöntemleri listesi için bkz:akış denetimli dil (Transact-SQL).

Örnekler

C.Bir SELECT ifade basit bir durum deyimiyle kullanma

İçinde birSELECTifade, basit birCASEifade yalnızca bir eşitlik denetimi sağlar; diğer bir karşılaştırma yapılır.Aşağıdaki örnekCASEdaha anlaşılabilir hale getirmek için ürün satırı kategori görünümünü değiştirmek için ifade.

B.Aranan bir durum deyimiyle bir ifade kullanarak

İçinde birSELECTifade, ArananCASEifade veren değerlerinin değiştirilmesi sonucu küme temel alan karşılaştırma değer.Aşağıdaki örnek, bir ürün için fiyat aralık temel alan bir metin açıklaması olarak liste fiyatını görüntüler.

C.durum IIf yerine kullanmak işlev yani kullanılıyor Microsoft Office 2010 Suite erişim

durum IIf işlevine benzeyen işlevselliği sağlarMicrosoftErişim.Aşağıdaki örnek, basit bir sorgu kullanan gösterirIIfiçin bir çıkış değeri sağlamak içinTelephoneInstructionssütun adında bir Access tablosudb1.ContactInfo.

SELECT FirstName, LastName, TelephoneNumber, 
     IIf(IsNull(TelephoneInstructions),"Any time",
     TelephoneInstructions) AS [When to Contact]
FROM db1.ContactInfo; 

Aşağıdaki örnekCASEiçin bir çıkış değeri sağlamak içinTelephoneSpecialInstructionssütunundaAdventureWorksGörünümPerson.vAdditionalContactInfo.

D.durum'de bir ORDER BY kullanarak yan tümce

Aşağıdaki örneklerde belirtilen sütun değerine göre satırları sıralama düzeni düzenini belirlemek için bir ORDER BY yan tümcesinde durum ifade kullanır.Değeri ilk örnekteSalariedFlagsütunHumanResources.EmployeeTablo hesaplandı.ÇalışanlarıSalariedFlagküme 1 sırasına göre döndürülürEmployeeIDAzalan sipariş.ÇalışanlarıSalariedFlagküme 0 sırasına göre döndürülürEmployeeIDartan sipariş.İkinci örnekte, sonuç kümesi sipariş sütuna göreTerritoryName, sütunCountryRegionNameAmerika Birleşik Devletleri ' olarak ve eşitCountryRegionNametüm diğer satırları.

E.durum içinde bir UPDATE deyim kullanarak

Aşağıdaki örnek, durum ifade sütun için küme değer belirlemek için bir UPDATE ifade kullanırVacationHoursÇalışanlar ileSalariedFlag0 olarak ayarlayın.10 Saat den çıkarılarakVacationHoursnegatif bir değer sonuçlarVacationHours40 saat olarak artan; aksi takdirde,VacationHoursArtırılmış 20 saat. tarafındanÇıktı yan tümce görüntülemek için kullanılan önce veya sonra tatil değerleri.

F.durum küme deyim kullanma

Aşağıdaki örnek, bir küme tablo değerli işlev deyiminde durum ifade kullanırdbo.GetContactInfo.,AdventureWorksveritabanı, kişilerle ilgili tüm veriler depolanırPerson.ContactTablo.Örneğin, bir çalışanın, tedarikçi temsilcisi, perakende mağaza yetkilisine veya tüketici kişi olabilir.İşlev adı ve Soyadı verir bir verilenContactIDiçin yazın person.The durum ifade küme deyimindeki sütun için görüntülenecek değeri belirler ilgiliContactTypetemel varlığıContactIDsütunundaEmployee,StoreContact,VendorContact, orIndividual(tüketici) tablolar.

G.durum bir HAVING yan tümce kullanarak

Aşağıdaki örnek, ifade ile döndürülen satırları sınırlamak için bir HAVING yan tümce durum ifade kullanır.İfade verir en yüksek saat hızı için her unvanınıHumanResources.EmployeeTablo.HAVING yan tümce, Erkekler en fazla ödeme ücreti olarak 40 dolar ya da en fazla ödeme ücreti Kadınlar büyük 42 dolar büyük tutulduğu için başlıkları sınırlar.