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.

Konu bağlantısı simgesi 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

Veri Türleri (Transact-SQL)

Dize işlevler (Transact-sql)

[] (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)