MSDN Library

CHARINDEX (Transact-SQL)

 

THIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Consente di cercare in un'espressione un'altra espressione e restituisce la posizione iniziale se la trova.

Topic link icon Convenzioni della sintassi Transact-SQL

  
CHARINDEX ( expressionToFind ,expressionToSearch [ , start_location ] )   

expressionToFind
Espressione di caratteri che contiene la sequenza da cercare. expressionToFind ha un limite di 8000 caratteri.

expressionToSearch
Espressione di caratteri da cercare.

start_location
Valore integer o espressione bigint in cui inizia la ricerca. Se start_location viene omesso, è un numero negativo oppure è uguale a zero, la ricerca viene avviata all'inizio di expressionToSearch.

bigint se expressionToSearch è di tipo varchar(max), nvarchar(max) o varbinary(max). In caso contrario, è di tipo int.

Se solo a una delle due espressioni expressionToFind e expressionToSearch è 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 expressionToFind o expressionToSearch è NULL, CHARINDEX restituisce NULL.

Se l'espressione expressionToFind non viene individuata in expressionToSearch, CHARINDEX restituisce 0.

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

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.

Quando si utilizzano le regole di confronto SC, le coppie di surrogati vengono considerate da start_location e dal valore restituito come un solo carattere, non due. Per ulteriori informazioni, vedere Regole di confronto e supporto Unicode.

A.Restituzione della posizione iniziale di un'espressione

Nell'esempio seguente viene restituita la posizione in corrispondenza della quale inizia la sequenza di caratteri bicycle nella colonna DocumentSummary della tabella Document del database AdventureWorks2012.

DECLARE @document varchar(64);  
SELECT @document = 'Reflectors are vital safety' +  
                   ' components of your bicycle.';  
SELECT CHARINDEX('bicycle', @document);  
GO  

Set di risultati:

-----------   
48            

B.Ricerca da una posizione specifica

Nell'esempio seguente viene utilizzato il parametro facoltativo start_location per avviare la ricerca di vital dal quinto carattere della colonna DocumentSummary nel database AdventureWorks2012.

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)  

C.Ricerca di un'espressione inesistente

Nell'esempio seguente viene illustrato il set di risultati ottenuto quando l'espressione expressionToFind non viene individuata in expressionToSearch.

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)

D.Esecuzione di una ricerca con distinzione tra maiuscole e minuscole

Nell'esempio seguente viene eseguita una ricerca con distinzione tra maiuscole e minuscole per la stringa 'TEST' in 'This is a Test``'.

USE tempdb;  
GO  
--perform a case sensitive search  
SELECT CHARINDEX ( 'TEST',  
       'This is a 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 ist ein Test'.

  
USE tempdb;  
GO  
SELECT CHARINDEX ( 'Test',  
       'This is a Test'  
       COLLATE Latin1_General_CS_AS);  

Set di risultati:

-----------

13

E.Esecuzione di una ricerca senza distinzione tra maiuscole e minuscole

Nell'esempio seguente viene eseguita una ricerca senza distinzione tra maiuscole e minuscole per la stringa 'TEST' in 'Das ist ein Test'.

  
USE tempdb;  
GO  
SELECT CHARINDEX ( 'TEST',  
       'This is a Test'  
       COLLATE Latin1_General_CI_AS);  
GO  

Set di risultati:

-----------

13

Funzioni per i valori stringa (Transact-SQL)
+ (concatenazione di stringhe) (Transact-SQL)
Regole di confronto e supporto Unicode

Aggiunte alla community

Mostra:
© 2016 Microsoft