Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Database SQL di Azure
Istanza gestita di SQL di Azure
Azure Synapse Analytics
Piattaforma di analisi (PDW)
Endpoint di analisi SQL in Microsoft Fabric
Magazzino in Microsoft Fabric
Database SQL in Microsoft Fabric
Questa funzione esegue la ricerca dell'espressione di un carattere all'interno di una seconda espressione di caratteri, e restituisce la posizione iniziale della prima espressione, se trovata.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )
Argomenti
expressionToFind
Espressione di caratteri contenente la sequenza da trovare. expressionToFind ha un limite di 8.000 caratteri.
expressionToSearch
Espressione di caratteri da cercare.
start_location
Espressione integer o bigint in corrispondenza della quale inizia la ricerca. Se start_location non viene specificato, ha un valore negativo o ha un valore zero (0), la ricerca inizia all'inizio di expressionToSearch.
Tipi restituiti
bigint se expressionToSearch è del tipo di dati varchar(max), varbinary(max) o varchar(max). In caso contrario, int.
Osservazioni:
Se l'espressione expressionToFind o expressionToSearch ha un tipo di dati Unicode (nchar o nvarchar) e l'altra espressione non lo CHARINDEX converte in un tipo di dati Unicode.
CHARINDEX non può essere usato con tipi di dati image, ntext o text .
Se l'espressione expressionToFind o expressionToSearch ha un NULL valore, CHARINDEX restituisce NULL.
Se CHARINDEX non trova expressionToFind all'interno di expressionToSearch, CHARINDEX restituisce 0.
CHARINDEX esegue confronti basati sulle regole di confronto di input. Per eseguire un confronto in regole di confronto specificate, utilizzare COLLATE per applicare regole di confronto esplicite all'input.
La posizione di inizio restituita è in base 1 e non in base 0.
0x0000 (char(0)) è un carattere non definito nelle regole di confronto di Windows e non può essere incluso in CHARINDEX.
Caratteri supplementari (coppie di surrogati)
Quando si usano regole di confronto carattere supplementare (SC), sia start_location che il valore restituito conteggiano coppie di surrogati come un carattere, non due. Per altre informazioni, vedere Regole di confronto e supporto Unicode.
Esempi
R. Restituire la posizione iniziale di un'espressione
In questo esempio viene cercato l'elemento bicycle nella variabile di valore stringa ricercata @document.
DECLARE @document AS VARCHAR (64);
SELECT @document = 'Reflectors are vital safety' +
' components of your bicycle.';
SELECT CHARINDEX('bicycle', @document);
GO
Il set di risultati è il seguente.
-----------
48
B. Ricerca da una posizione specifica
Nell'esempio seguente viene usato il parametro facoltativo start_location per avviare la ricerca di vital in corrispondenza del quinto carattere della variabile di valore stringa ricercata @document.
DECLARE @document AS VARCHAR (64);
SELECT @document = 'Reflectors are vital safety' +
' components of your bicycle.';
SELECT CHARINDEX('vital', @document, 5);
GO
Il set di risultati è il seguente.
-----------
16
C. Cercare un'espressione inesistente
Questo esempio mostra il set di risultati quando CHARINDEX non trova expressionToFind all'interno di expressionToSearch.
DECLARE @document AS VARCHAR (64);
SELECT @document = 'Reflectors are vital safety' +
' components of your bicycle.';
SELECT CHARINDEX('bike', @document);
GO
Il set di risultati è il seguente.
-----------
0
D. Eseguire una ricerca con distinzione tra maiuscole e minuscole
Nell'esempio seguente viene eseguita una ricerca con distinzione tra maiuscole e minuscole della stringa TEST nella stringa This is a Test.
USE tempdb;
GO
--perform a case sensitive search
SELECT CHARINDEX('TEST', 'This is a Test' COLLATE Latin1_General_CS_AS);
Il set di risultati è il seguente.
-----------
0
Nell'esempio seguente viene eseguita una ricerca con distinzione tra maiuscole e minuscole della stringa Test nella stringa This is a Test.
USE tempdb;
GO
SELECT CHARINDEX('Test', 'This is a Test' COLLATE Latin1_General_CS_AS);
Il set di risultati è il seguente.
-----------
11
E. Eseguire una ricerca senza distinzione tra maiuscole e minuscole
In questo esempio viene illustrata una ricerca senza distinzione tra maiuscole e minuscole per la stringa nella stringa TESTThis is a Testdi ricerca.
USE tempdb;
GO
SELECT CHARINDEX('TEST', 'This is a Test' COLLATE Latin1_General_CI_AS);
GO
Il set di risultati è il seguente.
-----------
11
Esempi: Azure Synapse Analytics e Piattaforma di strumenti analitici (PDW)
F. Eseguire la ricerca dall'inizio di un'espressione stringa
Nell'esempio seguente viene restituita la prima posizione della stringa is nella stringa This is a string, a partire dalla posizione 1 (il primo carattere) di This is a string.
SELECT CHARINDEX('is', 'This is a string');
Il set di risultati è il seguente.
---------
3
G. Cercare da una posizione diversa dalla prima posizione
Nell'esempio seguente viene restituita la prima posizione della stringa is nella stringa This is a string, a partire dalla posizione 4 (il quarto carattere).
SELECT CHARINDEX('is', 'This is a string', 4);
Il set di risultati è il seguente.
---------
6
H. Risultati quando la stringa non viene trovata
Questo esempio mostra il valore restituito quando CHARINDEX non trova la stringa string_pattern nella stringa cercata.
SELECT TOP (1) CHARINDEX('at', 'This is a string')
FROM dbo.DimCustomer;
Il set di risultati è il seguente.
---------
0