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.
Convenzioni 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)