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
Azure Synapse Analytics
Analiz Platformu Sistemi (PDW)
Microsoft Fabric'teki SQL analiz uç noktası
Microsoft Fabric'teki ambar
Microsoft Fabric'teki SQL veritabanı
Bir desenin belirtilen ifadedeki ilk oluşumunun başlangıç konumunu veya desen bulunamazsa tüm geçerli metin ve karakter veri türlerinde sıfırı döndürür.
Transact-SQL söz dizimi kuralları
Syntax
PATINDEX ( '%pattern%' , expression )
Arguments
pattern
Bulunabilecek sırayı içeren bir karakter ifadesi. Wild card karakterler kullanılabilir; ancak % karakter önce gelmeli ve kalıp takip etmelidir (ilk veya son karakterleri aradığınızda hariç). Pattern , karakter dizisi veri tipi kategorisinin bir ifadesidir. Pattern 8.000 karakterle sınırlıdır.
Note
GELENEKSEL normal ifadeler SQL Server 2022 (16.x) ve önceki sürümlerde yerel olarak desteklenmese de, çeşitli joker ifadeler kullanılarak benzer karmaşık desen eşleştirmesi gerçekleştirilebilir. Joker sözdizimiyle ilgili daha fazla detay için String operatörleri dokümantasyonuna bakınız. SQL Server 2025 (17.x)'deki düzenli ifade fonksiyonları hakkında bilgi için Düzenli ifade fonksiyonları bölümüne bakınız.
expression
Bir ifade, genellikle belirtilen desen için aranan bir sütundur. ifade , karakter dizisi veri tipi kategorisine aittir.
Dönüş türleri
ifade, varchar(max) veya nvarchar(max) veri tiplerinden isese bigint; aksi takdirde içsel.
Remarks
Eğer desen iseNULL, PATINDEX dönerNULL.
ifadesi iseNULLPATINDEX, bir hata döndürür.
için PATINDEX başlangıç konumu şeklindedir 1.
PATINDEX girişin harmanlamasını temel alarak karşılaştırmalar gerçekleştirir. Belirtilen harmanlamada karşılaştırma yapmak için, girişe açık bir harmanlama uygulamak için kullanabilirsiniz COLLATE .
Ek karakterler (Vekil çiftler)
Ek karakterlerle (SC) yapılan derlemeler kullandığınızda, dönüş değeri ifade parametresindeki herhangi bir UTF-16 vekil çiftini tek bir karakter olarak sayar. Daha fazla bilgi için bkz. Harmanlama ve Unicode desteği.
0x0000 (char(0)), Windows harmanlamalarında tanımlanmamış bir karakterdir ve içine PATINDEXeklenemez.
Examples
A. Temel PATINDEX örneği
Aşağıdaki örnek, karakterlerin başlangıç konumu için kısa bir karakter interesting datadizesini (ter) denetler.
SELECT PATINDEX('%ter%', 'interesting data') AS position;
Sonuç kümesi aşağıdadır.
position
--------
3
B. PATINDEX ile desen kullanma
Aşağıdaki örnek, AdventureWorks2025 veritabanındaki tablodaki sütunun Document belirli bir satırında DocumentSummary desenin ensure başladığı konumu bulur.
SELECT PATINDEX('%ensure%', DocumentSummary) AS position
FROM Production.Document
WHERE DocumentNode = 0x7B40;
GO
Sonuç kümesi aşağıdadır.
position
--------
64
Bir yan tümce kullanarak WHERE aranacak satırları kısıtlamazsanız, sorgu tablodaki tüm satırları döndürür ve desenin bulunduğu satırların sıfır olmayan değerlerini, desenin bulunmadığı tüm satırlar için sıfır değerini raporlar.
C. PATINDEX ile joker karakter kullanma
Aşağıdaki örnekte % ve _ joker karakterleri kullanarak desenin 'en'bulunduğu konumu ve ardından tek bir karakteri bulur ve 'ure' belirtilen dizede başlar (dizin 1'den başlar):
SELECT PATINDEX('%en_ure%', 'Please ensure the door is locked!') AS position;
Sonuç kümesi aşağıdadır.
position
--------
8
PATINDEX gibi LIKEçalışır, böylece joker karakterlerden herhangi birini kullanabilirsiniz. Deseni yüzdeler arasında kapatmanız gerekmez.
PATINDEX('a%', 'abc') 1 döndürür ve PATINDEX('%a', 'cba') 3 döndürür.
'nin LIKE aksinePATINDEX, işlevine CHARINDEX benzer bir konum döndürür.
D. PATINDEX ile karmaşık joker ifadeler kullanma
Aşağıdaki örnek, bir sayı, harf veya boşluk olmayan bir karakterin konumunu [^] kullanır.
SELECT PATINDEX('%[^ 0-9A-Za-z]%', 'Please ensure the door is locked!') AS position;
Sonuç kümesi aşağıdadır.
position
--------
33
E. PATINDEX ile COLLATE kullanma
Aşağıdaki örnek, aranan ifadenin harmanlamasını açıkça belirtmek için işlevini kullanır COLLATE .
USE tempdb;
GO
SELECT PATINDEX('%ein%', 'Das ist ein Test' COLLATE Latin1_General_BIN);
GO
Sonuç kümesi aşağıdadır.
position
--------
9
F. Deseni belirtmek için değişken kullanma
Aşağıdaki örnek, desen parametresine bir değer iletmek için bir değişken kullanır. Bu örnek AdventureWorks2025 veritabanını kullanıyor.
DECLARE @MyValue AS VARCHAR (10) = 'safety';
SELECT PATINDEX('%' + @MyValue + '%', DocumentSummary) AS position
FROM Production.Document
WHERE DocumentNode = 0x7B40;
Sonuç kümesi aşağıdadır.
position
--------
22
İlgili içerik
- MESELA (Transact-SQL)
- CHARINDEX (Transact-SQL)
- LEN (Transact-SQL)
- Veri türleri (Transact-SQL)
- Dize İşlevleri (Transact-SQL)
- [ ] (Joker karakter - eşleştirecek karakterler) (Transact-SQL)
- [^] (Joker karakter - eşleşmeyen karakterler) (Transact-SQL)
- _ (Joker karakter - bir karakterle eşleş) (Transact-SQL)
- Yüzde karakteri (joker karakter - eşleştirecek karakterler) (Transact-SQL)