PATINDEX (Transact-sql)
Desen, tüm geçerli metin ve karakter veri türleri üzerinde bulunamazsa bir deseni ilk geçtiği başlangıç konumu belirtilen ifade veya sıfır döndürür.
Transact-SQL Sözdizim Kuralları
Sözdizimi
PATINDEX ( '%pattern%' , expression )
Bağımsız değişkenler
pattern
Bulunmak için sırasını içeren karakter ifade iş. Joker karakterler kullanılabilir; Ancak % karakter olmalıdır önce gelir ve takip pattern(dışında ne zaman ilk veya son karakter arama). patternkarakter dizesi veri türü kategori ifadesidir.expression
Olan bir ifade, genellikle belirli bir desen için aranan bir sütun. expressionkarakter dizesi veri türü kategori var.
Dönüş Türleri
bigintEğer expressionolan varchar(max)veya nvarchar(max)veri türleri; Aksi takdirde int.
Açıklamalar
Ya da, patternya expressionNULL, PATINDEX işlevi null.
PATINDEX giriş harmanlama üzerinde göre karşılaştırmalar yapar. Belirli bir harmanlamada bir karşılaştırma yapmak için, girdiye açıkça bir harmanlama uygulamak üzere COLLATE komutunu kullanabilirsiniz.
İkincil Karakterler (Yedek Çiftler)
sc alfabe kullanırken, dönüş değeri herhangi bir utf-16 temsilci çiftleri saymak expressionparametre olarak tek bir karakter. Daha fazla bilgi için, bkz. Harmanlama ve Unicode desteği.
0x0000 (char(0)) Windows harmanlamaları tanımsız bir karakterdir ve PATINDEX içinde yer alamaz.
Örnekler
A.Desen PATINDEX ile kullanma
Aşağıdaki örnek, hangi konumdan bulur desen ensurebelirli bir satır içinde başlayan DocumentSummarysütununda Documenttablosu.
USE AdventureWorks2012;
GO
SELECT PATINDEX('%ensure%',DocumentSummary)
FROM Production.Document
WHERE DocumentNode = 0x7B40;
GO
USE AdventureWorks2012;
GO
SELECT PATINDEX('%ensure%',DocumentSummary)
FROM Production.Document
WHERE DocumentNode = 0x7B40;
GO
Sonuç kümesi buradadır.
-----------
64
(1 row(s) affected)
Kullanarak Aranacak satır kısıtlamayın, bir WHEREyan tümcesi, sorgunun tablodaki tüm satırları döndürür ve desen bulundu bu satırlar için sıfır olmayan değerler ve sıfır olan desen bulunamadı tüm satırlar için raporlar.
B.Joker karakterler PATINDEX ile kullanma
Aşağıdaki örnek, hangi konumdan bulmak için % ve _ joker karakterleri kullanır desen 'en', ardından herhangi bir karakter ve 'ure'(dizin başlar 1) belirtilen dizeyi başlatır:
SELECT PATINDEX('%en_ure%', 'please ensure the door is locked');
SELECT PATINDEX('%en_ure%', 'please ensure the door is locked');
Sonuç kümesi buradadır.
------------
8
8
PATINDEXinşaat adil beğenmek LIKE, joker karakterlerden herhangi birini kullanabilirsiniz. Yüzdeler arasında kalıp içine gerekmez. PATINDEX('a%', 'abc')1 döner ve PATINDEX('%a', 'cba')3 döndürür.
Aksine LIKE, PATINDEXbir pozisyon, ne için benzer döndürür CHARINDEXyok.
C.HARMANLAMA PATINDEX ile kullanma
Aşağıdaki örnek COLLATEaranır ifade harmanlama açıkça belirtmek için işlev.
USE tempdb;
GO
SELECT PATINDEX ( '%ein%', 'Das ist ein Test' COLLATE Latin1_General_BIN) ;
GO
USE tempdb;
GO
SELECT PATINDEX ( '%ein%', 'Das ist ein Test' COLLATE Latin1_General_BIN) ;
GO
D.Desen belirtmek için bir değişken kullanarak
Aşağıdaki örnek, bir değişken değerine geçmek kullanır patternparametresi.
USE AdventureWorks2012;
GO
DECLARE @MyValue varchar(10) = 'safety';
SELECT PATINDEX('%' + @MyValue + '%', DocumentSummary)
FROM Production.Document
WHERE DocumentNode = 0x7B40;
USE AdventureWorks2012;
GO
DECLARE @MyValue varchar(10) = 'safety';
SELECT PATINDEX('%' + @MyValue + '%', DocumentSummary)
FROM Production.Document
WHERE DocumentNode = 0x7B40;
Sonuç kümesi buradadır.
------------
22
Ayrıca bkz.
Başvuru
[] (Joker karakterleri eşleşmesi için) (Transact-sql)
[^] (Joker karakterleri eşleşmesi için değil) (Transact-sql)
_ (Joker eşleme bir karakter) (Transact-sql)
Yüzde karakter (joker karakterleri eşleşmesi için) (Transact-sql)