CHARINDEX (Transact-SQL)
Consente di cercare in expression2 l'espressione expression1 e restituisce la posizione iniziale se la trova. La ricerca inizia da start_location.
Sintassi
CHARINDEX ( expression1 ,expression2 [ , start_location ] )
Argomenti
expression1
Espressione di caratteri che contiene la sequenza da cercare. Il valore di expression1 è limitato a 8.000 caratteri.expression2
Espressione di caratteri da cercare.start_location
Valore integer o espressione bigint nella quale inizia la ricerca. Se start_location viene omesso, è un numero negativo oppure è uguale a zero, la ricerca viene avviata all'inizio di expression2.
Tipi restituiti
bigint se expression2 è di tipo varchar(max), nvarchar(max) o varbinary(max). In caso contrario, è di tipo int.
Osservazioni
Se solo a una delle due espressioni expression1 e expression2 è associato un tipo di dati Unicode (nvarchar o nchar), l'altra espressione viene convertita in un tipo di dati Unicode. Non è possibile utilizzare CHARINDEX con i tipi di dati text, ntext e image.
Se expression1 o expression2 è NULL, quando il livello di compatibilità del database è maggiore o uguale a 70, CHARINDEX restituisce NULL. Se il livello di compatibilità del database è minore o uguale a 65, CHARINDEX restituisce NULL solo quando expression1 e expression2 sono entrambe NULL.
Se l'espressione expression1 non viene individuata in expression2, CHARINDEX restituisce 0.
CHARINDEX esegue confronti in base alle regole di confronto dell'input. Per eseguire un confronto in una regola di confronto specificata, è possibile utilizzare COLLATE per applicare una regola di confronto esplicita all'input.
La posizione di inizio restituita è in base 1 e non in base 0.
Esempi
Nell'esempio seguente viene restituita la posizione in corrispondenza della quale inizia la sequenza di caratteri bicycle nella colonna DocumentSummary della tabella Document.
DECLARE @document varchar(64)
SELECT @document = 'Reflectors are vital safety' +
' components of your bicycle.'
SELECT CHARINDEX('bicycle', @document)
GO
Set di risultati:
-----------
48
Nell'esempio seguente viene utilizzato il parametro facoltativo start_location per avviare la ricerca di vital dal quinto carattere della colonna DocumentSummary.
DECLARE @document varchar(64)
SELECT @document = 'Reflectors are vital safety' +
' components of your bicycle.'
SELECT CHARINDEX('vital', @document, 5)
GO
Set di risultati:
-----------
16
(1 row(s) affected)
Nell'esempio seguente viene illustrato il set di risultati ottenuto quando l'espressione expression1 non viene individuata in expression2.
DECLARE @document varchar(64)
SELECT @document = 'Reflectors are vital safety' +
' components of your bicycle.'
SELECT CHARINDEX('bike', @document)
GO
Set di risultati:
-----------
0
(1 row(s) affected)
Nell'esempio seguente viene eseguita una ricerca con distinzione tra maiuscole e minuscole per la stringa 'TEST' in 'Das jst ein Test'.
USE tempdb;
GO
--perform a case sensitive search
SELECT CHARINDEX ( 'TEST',
'Das ist ein Test'
COLLATE Latin1_General_CS_AS)
Set di risultati:
-----------
0
Nell'esempio seguente viene eseguita una ricerca con distinzione tra maiuscole e minuscole per la stringa 'Test' in 'Das jst ein Test'.
USE tempdb;
GO
SELECT CHARINDEX ( 'Test',
'Das ist ein Test'
COLLATE Latin1_General_CS_AS)
Set di risultati:
-----------
13
Nell'esempio seguente viene eseguita una ricerca senza distinzione tra maiuscole e minuscole per la stringa 'TEST' in 'Das jst ein Test'.
USE tempdb;
GO
SELECT CHARINDEX ( 'Test',
'Das ist ein Test'
COLLATE Latin1_General_CI_AS)
GO
Set di risultati:
-----------
13
Vedere anche