Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL analiz uç noktası
Microsoft Fabric'te ambar
Microsoft Fabric'te SQL veritabanı
Transact-SQL fonksiyonu, CHOOSE Database Engine'daki değerler listesinden belirtilen indekste öğeyi döndürür.
Transact-SQL söz dizimi kuralları
Sözdizimi
CHOOSE ( index , val_1 , val_2 [ , val_n ] )
Arguments
dizin
Takip eden öğeler listesine 1 tabanlı bir indeks içeren tamsayı ifadesi.
Verilen indeks değerinin int dışında sayısal veri türü varsa, değer örtük olarak tam sayıya dönüştürülür. Eğer indeks değeri değerler dizisi sınırlarını aşarsa, CHOOSE döndürür NULL.
val_1 ... val_n
Her veri türünün virgülle ayrılmış değerlerinin listesi.
Dönüş türleri
Fonksiyona aktarılan tipler kümesinden en yüksek önceliğe sahip veri tipini döndürür. Daha fazla bilgi için bkz. Veri türü önceliği.
Açıklamalar
CHOOSE dizinin diziyi takip eden argümanlardan oluştuğu bir dizinin içine bir indeks gibi davranır. İndeks argümanı, aşağıdaki değerlerden CHOOSE hangisinin geri döneceğini belirler.
Bir CHOOSE cümlede çok büyük sayıda değer (virgülle ayrılmış binlerce değer) açıkça eklemek, kaynakları tüketebilir ve aşağıdaki hatayı döndürebilir:
Msg 8631, Level 17, State 1, Line 1
Internal error: Server stack limit has been reached. Please look for potentially deep nesting in your query, and try to simplify it.
Örnekler
Bu makaledeki kod örnekleri, Azure Data SQL Samples Repository GitHub deposundan indirebileceğiniz , AdventureWorksDW2025, veya AdventureWorksLT2025 örnek veritabanını kullanırAdventureWorks2025.
A. ÖRNEK SEÇ
Aşağıdaki örnek, değerler listesinden üçüncü öğeyi geri getirir.
SELECT CHOOSE(3, 'Manager', 'Director', 'Developer', 'Tester') AS Result;
Sonuç kümesi aşağıdadır.
Result
-------------
Developer
B. Sütuna göre örnek SEÇ
Aşağıdaki örnek, ProductCategoryID sütundaki değere dayalı temel bir karakter dizisi döndürür.
USE AdventureWorks2025;
GO
SELECT ProductCategoryID,
CHOOSE(ProductCategoryID, 'A', 'B', 'C', 'D', 'E') AS Expression1
FROM Production.ProductCategory;
Sonuç kümesi aşağıdadır.
ProductCategoryID Expression1
----------------- -----------
3 C
1 A
2 B
4 D
C. AY ile birlikte SELECT
Aşağıdaki örnek, bir ürün modelinin en son değiştirildiği sezonu geri getirir. Fonksiyon, MONTH sütundan ay değerini ModifiedDate döndürür.
USE AdventureWorksLT;
GO
SELECT Name,
ModifiedDate,
CHOOSE(MONTH(ModifiedDate), 'Winter', 'Winter', 'Spring', 'Spring', 'Spring', 'Summer', 'Summer', 'Summer', 'Autumn', 'Autumn', 'Autumn', 'Winter') AS Quarter_Modified
FROM SalesLT.ProductModel AS PM
WHERE Name LIKE '%Frame%'
ORDER BY ModifiedDate;
Sonuç kümesi aşağıdadır.
Name ModifiedDate Quarter_Modified
--------------------------- ----------------------- ----------------
HL Road Frame 2002-05-02 00:00:00.000 Spring
HL Mountain Frame 2005-06-01 00:00:00.000 Summer
LL Road Frame 2005-06-01 00:00:00.000 Summer
ML Road Frame 2005-06-01 00:00:00.000 Summer
ML Road Frame-W 2006-06-01 00:00:00.000 Summer
ML Mountain Frame 2006-06-01 00:00:00.000 Summer
ML Mountain Frame-W 2006-06-01 00:00:00.000 Summer
LL Mountain Frame 2006-11-20 09:56:38.273 Autumn
HL Touring Frame 2009-05-16 16:34:28.980 Spring
LL Touring Frame 2009-05-16 16:34:28.980 Spring