PATINDEX (Transact-SQL)

Zwraca pozycję początkową pierwszego wystąpienia deseń określone wyrażenielub zera jeśli deseń nie zostanie znaleziony na cały tekst ważne i znakowych typów danych.Aby uzyskać więcej informacji, zobacz Dopasowanie do wzorca w warunkach wyszukiwania.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

PATINDEX ( '%pattern%' , expression )

Argumenty

  • 'pattern'
    Jest literałem ciąg.Symbole wieloznaczne mogą być użyte; Jednakże znak % musi występować przed i postępuj zgodnie z pattern (z wyjątkiem podczas wyszukiwania pierwszego lub ostatniego znaków).patternto wyrażenie kategorię typu danych ciąg znaków.

  • expression
    Jest wyrażenie, zazwyczaj jest wyszukiwany określony wzorzec kolumna .expressionjest kategoria Typ danych ciąg znaków.

Zwracane typy

bigintJeśli expression jest varchar(max) lub nvarchar(max) typy danych, inaczej int.

Uwagi

Jeśli pattern lub expression ma wartość NULL, PATINDEX zwraca wartość NULL, gdy zgodność bazy danych poziom wynosi 70.Jeśli zgodność bazy danych poziom wynosi 65 lub starszy, PATINDEX zwraca wartość NULL tylko wtedy, gdy oba pattern i expression są wartości NULL.

PATINDEX wykonuje porównania oparte na sortowanie danych wejściowych.Przeprowadzenie porównania w określonym sortowanieumożliwia COLLATE dotyczą jawnych sortowanie danych wejściowych.

Przykłady

A.Deseń przy użyciu PATINDEX

Następujący przykład wyszukuje pozycji, w której wzorzec ensure rozpoczyna się w określonym wierszu DocumentSummary kolumna w Document tabela.

USE AdventureWorks2008R2;
GO
SELECT PATINDEX('%ensure%',DocumentSummary)
FROM Production.Document
WHERE DocumentNode = 0x7B40;
GO

Oto zestaw wyników.

-----------

64

(1 row(s) affected)

Jeśli nie ograniczają wierszy, które mają być wyszukiwane przy użyciu WHERE klauzula, kwerenda zwróci wszystkie wiersze w tabela , a wartości niezerowe raportów dla tych wierszy, w których wzór został znaleziony i zero dla wszystkich wierszy, w których nie znaleziono deseniu.

B.Używanie symboli wieloznacznych z PATINDEX

W poniższym przykładzie użyto symboli wieloznacznych, aby znaleźć pozycji, w której wzorzec en_ure rozpoczyna się w określonym wierszu DocumentSummary kolumna w Document tabela, w której znak podkreślenia jest symbol wieloznaczny reprezentujący dowolny znak.

USE AdventureWorks2008R2;
GO
SELECT PATINDEX('%en_ure%', DocumentSummary)
FROM Production.Document
WHERE DocumentNode = 0x7B40;
GO

Oto zestaw wyników.

------------

64

(1 row(s) affected)

Jeśli nie ograniczają wierszy, które mają być przeszukiwane, kwerenda zwróci wszystkie wiersze w tabela i raporty wartości niezerowe dla tych wierszy, w których wzorzec został odnaleziony.

C.SORTUJ przy użyciu PATINDEX

W poniższym przykładzie użyto COLLATE funkcja jawnie określić sortowanie wyrażenie będzie przeszukiwana.

USE tempdb;
GO
SELECT PATINDEX ( '%ein%', 'Das ist ein Test'  COLLATE Latin1_General_BIN) ;
GO