CHARINDEX (Transact-SQL)CHARINDEX (Transact-SQL)

Este tema se aplica a: SíSQL Server (a partir de 2008)Síbase de datos de SQL AzureSíalmacenamiento de datos de SQL Azure Sí Almacenamiento de datos paralelos THIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Esta función busca una expresión de caracteres dentro de una segunda expresión de caracteres, y devuelve la posición inicial de la primera expresión si se encuentra.This function searches for one character expression inside a second character expression, returning the starting position of the first expression if found.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )   

ArgumentosArguments

expressionToFindexpressionToFind
Una expresión de caracteres que contiene la secuencia que se va a buscar.A character expression containing the sequence to find. expressionToFind tiene un límite de 8000 caracteres.expressionToFind has an 8000 character limit.

expressionToSearchexpressionToSearch
Una expresión de caracteres que se va a buscar.A character expression to search.

start_locationstart_location
Una expresión integer o bigint donde empieza la búsqueda.An integer or bigint expression at which the search starts. Si no se especifica start_location, tiene un valor negativo o un valor cero (0), la búsqueda empieza al principio de expressionToSearch.If start_location is not specified, has a negative value, or has a zero (0) value, the search starts at the beginning of expressionToSearch.

Tipos de valores devueltosReturn types

bigint si expressionToSearch tiene el tipo de datos nvarchar(max), varbinary(max) o varchar(max); int en caso contrario.bigint if expressionToSearch has an nvarchar(max), varbinary(max), or varchar(max) data type; int otherwise.

NotasRemarks

Si expressionToFind o expressionToSearch tiene un tipo de datos Unicode (nchar o nvarchar) y la otra expresión no, la función CHARINDEX convierte esa otra expresión a un tipo de datos Unicode.If either the expressionToFind or expressionToSearch expression has a Unicode data type (nchar or nvarchar), and the other expression does not, the CHARINDEX function converts that other expression to a Unicode data type. CHARINDEX no se puede usar con los tipos de datos image, ntext o text.CHARINDEX cannot be used with image, ntext, or text data types.

Si expressionToFind o expressionToSearch tiene un valor NULL, CHARINDEX devuelve NULL.If either the expressionToFind or expressionToSearch expression has a NULL value, CHARINDEX returns NULL.

Si CHARINDEX no encuentra expressionToFind dentro de expressionToSearch, devuelve 0.If CHARINDEX does not find expressionToFind within expressionToSearch, CHARINDEX returns 0.

CHARINDEX realiza comparaciones en función de intercalación de entrada.CHARINDEX performs comparisons based on the input collation. Para realizar una comparación de una intercalación especificada, use COLLATE para aplicar una intercalación explícita a la entrada.To perform a comparison in a specified collation, use COLLATE to apply an explicit collation to the input.

La posición inicial devuelta es de base 1, no de base 0.The starting position returned is 1-based, not 0-based.

0x0000 (char(0)) es un carácter no definido en las intercalaciones de Windows y no se puede incluir en CHARINDEX.0x0000 (char(0)) is an undefined character in Windows collations and cannot be included in CHARINDEX.

Caracteres adicionales (pares suplentes)Supplementary Characters (Surrogate Pairs)

Al usar intercalaciones de SC, start_location y el valor devuelto cuentan los pares suplentes como un carácter, no como dos.When using SC collations, both start_location and the return value count surrogate pairs as one character, not two. Para más información, consulte Compatibilidad con la intercalación y Unicode.For more information, see Collation and Unicode Support.

EjemplosExamples

A.A. Devolver la posición inicial de una expresiónReturning the starting position of an expression

Este ejemplo se busca bicycle en la variable de valor de cadena de búsqueda @document.This example searches for bicycle in the searched string value variable @document.

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

El conjunto de resultados es el siguiente.Here is the result set.

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

B.B. Buscar desde una posición concretaSearching from a specific position

En este ejemplo se usa el parámetro opcional ubicación_inicial para empezar la búsqueda de vital en el quinto carácter de la variable de valor de cadena de búsqueda @document.This example uses the optional start_location parameter to start the search for vital at the fifth character of the searched string value variable @document.

DECLARE @document varchar(64);  

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

El conjunto de resultados es el siguiente.Here is the result set.

-----------   
16            

(1 row(s) affected)  

C.C. Buscar una expresión inexistenteSearching for a nonexistent expression

En este ejemplo se muestra el conjunto de resultados cuando CHARINDEX no encuentra expressionToFind dentro de expressionToSearch.This example shows the result set when CHARINDEX does not find expressionToFind within expressionToSearch.

DECLARE @document varchar(64);  

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

El conjunto de resultados es el siguiente.Here is the result set.

-----------
0

(1 row(s) affected)

En este ejemplo se muestra una búsqueda con distinción de mayúsculas y minúsculas de la cadena 'TEST' en la cadena de búsqueda 'This is a Test``'.This example shows a case-sensitive search for the string 'TEST' in searched string 'This is a Test``'.

USE tempdb;  
GO  
--perform a case sensitive search  
SELECT CHARINDEX ( 'TEST',  
       'This is a Test'  
       COLLATE Latin1_General_CS_AS);  

El conjunto de resultados es el siguiente.Here is the result set.

-----------
0

En este ejemplo se muestra una búsqueda con distinción de mayúsculas y minúsculas de la cadena 'Test' en 'This is a Test'.This example shows a case-sensitive search for the string 'Test' in 'This is a Test'.


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

El conjunto de resultados es el siguiente.Here is the result set.

-----------
11

En este ejemplo se muestra una búsqueda sin distinción de mayúsculas y minúsculas de la cadena 'TEST' en 'This is a Test'.This example shows a case-insensitive search for the string 'TEST' in 'This is a Test'.


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

El conjunto de resultados es el siguiente.Here is the result set.

-----------
13

Ejemplos: Almacenamiento de datos SQL de AzureAzure SQL Data Warehouse y Almacenamiento de datos paralelosParallel Data WarehouseExamples: Almacenamiento de datos SQL de AzureAzure SQL Data Warehouse and Almacenamiento de datos paralelosParallel Data Warehouse

F.F. Buscar desde el principio de una expresión de cadenaSearching from the start of a string expression

En este ejemplo se devuelve la primera ubicación de la cadena is en la cadena This is a string, empezando por la posición 1 (el primer carácter) de This is a string.This example returns the first location of the string is in string This is a string, starting from position 1 (the first character) of This is a string.

SELECT CHARINDEX('is', 'This is a string');  

El conjunto de resultados es el siguiente.Here is the result set.

---------
3

G.G. Buscar desde una posición distinta de la primera posiciónSearching from a position other than the first position

En este ejemplo se devuelve la primera ubicación de la cadena is en la cadena This is a string, empezando por la posición 4 (el cuarto carácter).This example returns the first location of the string is in string This is a string, starting the search from position 4 (the fourth character).

SELECT CHARINDEX('is', 'This is a string', 4);  

El conjunto de resultados es el siguiente.Here is the result set.

---------
 6

H.H. Resultados cuando no se encuentra la cadenaResults when the string is not found

En este ejemplo se muestra el valor devuelto cuando CHARINDEX no encuentra la cadena patrón_de_cadena en la cadena buscada.This example shows the return value when CHARINDEX does not find string string_pattern in the searched string.

SELECT TOP(1) CHARINDEX('at', 'This is a string') FROM dbo.DimCustomer;  

El conjunto de resultados es el siguiente.Here is the result set.

---------
0

Vea tambiénSee also

LEN (Transact-SQL)LEN (Transact-SQL)
PATINDEX (Transact-SQL)PATINDEX (Transact-SQL)
Funciones de cadena (Transact-SQL)String Functions (Transact-SQL)
+ (Concatenación de cadenas) (Transact-SQL)+ (String Concatenation) (Transact-SQL)
Compatibilidad con la intercalación y UnicodeCollation and Unicode Support