PATINDEX (Transact-SQL)

Restituisce la posizione di inizio della prima occorrenza di un criterio di ricerca in un'espressione specificata, oppure zero se il criterio di ricerca non viene trovato, in tutti i dati di tipo carattere e text validi. Per ulteriori informazioni, vedere Criteri di ricerca nelle condizioni di ricerca.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

PATINDEX ( '%pattern%' , expression )

Argomenti

  • pattern
    Stringa letterale. È possibile utilizzare i caratteri jolly. Il carattere %, tuttavia, deve precedere e seguire pattern, tranne nelle ricerche del primo o dell'ultimo carattere. pattern è un'espressione appartenente alla categoria dei tipi di dati per stringhe di caratteri.
  • expression
    Espressione, che in genere indica una colonna in cui viene cercato il criterio specificato. expression appartiene alla categoria dei tipi di dati per stringhe di caratteri.

Tipi restituiti

bigint se expression è di tipo varchar(max) o nvarchar(max). Per gli altri tipi di dati, int.

Osservazioni

Se pattern o expression è NULL, l'istruzione PATINDEX restituisce NULL quando il livello di compatibilità del database è 70. Se il livello di compatibilità del database è 65 o inferiore, l'istruzione restituisce NULL solo quando sia pattern che expression sono NULL.

L'istruzione PATINDEX esegue i confronti in base alle regole di confronto dell'input. Per eseguire un confronto in base a regole di confronto specifiche, è possibile utilizzare COLLATE per applicare regole di confronto esplicite all'input.

Esempi

A. Utilizzo di un criterio di ricerca con PATINDEX

Nell'esempio seguente viene individuata la posizione in cui il criterio di ricerca ensure ha inizio in una riga specifica della colonna DocumentSummary nella tabella Document.

USE AdventureWorks;
GO
SELECT PATINDEX('%ensure%',DocumentSummary)
FROM Production.Document
WHERE DocumentID = 3;
GO

Set di risultati:

----------- 
64          

(1 row(s) affected)

Se non si imposta una limitazione per le righe in cui eseguire la ricerca tramite la clausola WHERE, la query restituisce tutte le righe della tabella, indicando valori diversi da zero per le righe in cui il criterio di ricerca è stato trovato e zero per tutte le righe in cui la ricerca ha avuto esito negativo.

B. Utilizzo di caratteri jolly con PATINDEX

Nell'esempio seguente vengono utilizzati caratteri jolly per individuare la posizione in cui il criterio di ricerca en_ure ha inizio in una riga specifica della colonna DocumentSummary nella tabella Document. Il carattere di sottolineatura è il carattere jolly che rappresenta qualsiasi carattere.

USE AdventureWorks;
GO
SELECT PATINDEX('%en_ure%', DocumentSummary)
FROM Production.Document
WHERE DocumentID = 3;
GO

Set di risultati:

------------
64

(1 row(s) affected)

Se non si imposta una limitazione per le righe in cui eseguire la ricerca, la query restituisce tutte le righe della tabella, indicando valori diversi da zero per le righe in cui il criterio di ricerca è stato trovato.

C. Utilizzo di COLLATE con PATINDEX

Nell'esempio seguente viene utilizzata la funzione COLLATE per specificare in modo esplicito le regole di confronto dell'espressione indicante il contesto della ricerca.

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

Vedere anche

Riferimento

Tipi di dati (Transact-SQL)
Funzioni per i valori stringa (Transact-SQL)
[ ] (carattere jolly) (Transact-SQL)
[^] (carattere jolly) (Transact-SQL)
_ (carattere jolly per corrispondenze di singoli caratteri) (Transact-SQL)
% (carattere jolly) (Transact-SQL)

Guida in linea e informazioni

Assistenza su SQL Server 2005