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