Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
Azure SQL Database
Instancia administrada de Azure SQL
Azure Synapse Analytics
Analytics Platform System (PDW)
Punto de conexión de SQL Analytics en Microsoft Fabric
Almacén en Microsoft Fabric
Base de datos SQL en Microsoft Fabric
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.
Convenciones de sintaxis de Transact-SQL
Sintaxis
CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )
Argumentos
expressionToFind
Una expresión de caracteres que contiene la secuencia que se va a buscar. expressionToFind tiene un límite de 8000 caracteres.
expressionToSearch
Una expresión de caracteres que se va a buscar.
start_location
Una expresión integer o bigint donde empieza la búsqueda. Si no se especifica start_location, tiene un valor negativo o tiene un valor cero (0), la búsqueda comienza al principio de expressionToSearch.
Tipos de valores devueltos
bigint si expressionToSearch tiene el tipo de datos nvarchar(max) , varbinary(max) o varchar(max) ; int en caso contrario.
Observaciones
Si la expresión expressionToFind o expressionToSearch tiene un tipo de datos Unicode (nchar o nvarchar) y la otra expresión no, la CHARINDEX función convierte esa otra expresión en un tipo de datos Unicode.
CHARINDEX no se puede usar con tipos de datos image, ntext ni text .
Si la expresión expressionToFind o expressionToSearch tiene un NULL valor, CHARINDEX devuelve NULL.
Si CHARINDEX no encuentra expressionToFind en expressionToSearch, CHARINDEX devuelve 0.
CHARINDEX realiza comparaciones basadas en la intercalación de entrada. Para realizar una comparación en una intercalación especificada, use COLLATE para aplicar una intercalación explícita a la entrada.
La posición inicial devuelta es de base 1, no de base 0.
0x0000 (char(0)) es un carácter indefinido en intercalaciones de Windows y no se puede incluir en CHARINDEX.
Caracteres adicionales (pares suplentes)
Al usar intercalaciones de caracteres adicionales (SC), tanto start_location como pares suplentes de recuento de valores devueltos como un carácter, no dos. Para obtener más información, consulte Compatibilidad con intercalación y Unicode.
Ejemplos
A. Devolver la posición inicial de una expresión
Este ejemplo se busca bicycle en la variable de valor de cadena de búsqueda @document.
DECLARE @document AS VARCHAR (64);
SELECT @document = 'Reflectors are vital safety' +
' components of your bicycle.';
SELECT CHARINDEX('bicycle', @document);
GO
Este es el conjunto de resultados.
-----------
48
B. Buscar desde una posición específica
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.
DECLARE @document AS VARCHAR (64);
SELECT @document = 'Reflectors are vital safety' +
' components of your bicycle.';
SELECT CHARINDEX('vital', @document, 5);
GO
Este es el conjunto de resultados.
-----------
16
C. Buscar una expresión inexistente
En este ejemplo se muestra el conjunto de resultados cuando CHARINDEX no encuentra expressionToFind dentro de expressionToSearch.
DECLARE @document AS VARCHAR (64);
SELECT @document = 'Reflectors are vital safety' +
' components of your bicycle.';
SELECT CHARINDEX('bike', @document);
GO
Este es el conjunto de resultados.
-----------
0
D. Realizar una búsqueda que distingue mayúsculas de minúsculas
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.
USE tempdb;
GO
--perform a case sensitive search
SELECT CHARINDEX('TEST', 'This is a Test' COLLATE Latin1_General_CS_AS);
Este es el conjunto de resultados.
-----------
0
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.
USE tempdb;
GO
SELECT CHARINDEX('Test', 'This is a Test' COLLATE Latin1_General_CS_AS);
Este es el conjunto de resultados.
-----------
11
E. Realizar una búsqueda que no distingue mayúsculas de minúsculas
En este ejemplo se muestra una búsqueda sin distinción entre mayúsculas y minúsculas de la cadena en la cadena TESTThis is a Testen la que se ha buscado .
USE tempdb;
GO
SELECT CHARINDEX('TEST', 'This is a Test' COLLATE Latin1_General_CI_AS);
GO
Este es el conjunto de resultados.
-----------
11
Ejemplos: Azure Synapse Analytics y Sistema de la plataforma de análisis (PDW)
F. Buscar desde el principio de una expresión de cadena
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.
SELECT CHARINDEX('is', 'This is a string');
Este es el conjunto de resultados.
---------
3
G. Buscar desde una posición distinta de la primera posición
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).
SELECT CHARINDEX('is', 'This is a string', 4);
Este es el conjunto de resultados.
---------
6
H. Resultados cuando no se encuentra la cadena
En este ejemplo se muestra el valor devuelto cuando CHARINDEX no encuentra la cadena string_pattern en la cadena buscada.
SELECT TOP (1) CHARINDEX('at', 'This is a string')
FROM dbo.DimCustomer;
Este es el conjunto de resultados.
---------
0
Contenido relacionado
- LEN (Transact-SQL)
- PATINDEX (Transact-SQL)
- String Functions (Transact-SQL) [Funciones de cadena (Transact-SQL)]
- + (concatenación de cadenas) (Transact-SQL)
- Compatibilidad con intercalación y Unicode