CHARINDEX (Transact-SQL)
Se aplica a: punto de conexión de SQL Server
Azure SQL Database
Azure SQL Instancia administrada
punto de conexión de SQL Analytics Analytics Platform System (PDW) de SQL Analytics
System (PDW)
de SQL Server en Microsoft Fabric
Warehouse 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 ] )
Nota:
Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.
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 un valor cero (0), la búsqueda empieza 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 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. CHARINDEX no se puede usar con los tipos de datos image, ntext o text.
Si expressionToFind o expressionToSearch tiene un valor NULL, CHARINDEX devuelve NULL.
Si CHARINDEX no encuentra expressionToFind dentro de expressionToSearch, devuelve 0.
CHARINDEX realiza comparaciones en función de intercalación de entrada. Para realizar una comparación de 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 no definido en las intercalaciones de Windows y no se puede incluir en CHARINDEX.
Caracteres adicionales (pares suplentes)
Al usar intercalaciones de SC, start_location y el valor devuelto cuentan los pares suplentes como un carácter, no como dos. Para más información, consulte Compatibilidad con la 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 VARCHAR(64);
SELECT @document = 'Reflectors are vital safety' +
' components of your bicycle.';
SELECT CHARINDEX('bicycle', @document);
GO
El conjunto de resultados es el siguiente:
-----------
48
B. Buscar desde una posición concreta
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 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:
-----------
16
(1 row(s) affected)
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 VARCHAR(64);
SELECT @document = 'Reflectors are vital safety' +
' components of your bicycle.';
SELECT CHARINDEX('bike', @document);
GO
El conjunto de resultados es el siguiente:
-----------
0
(1 row(s) affected)
D. Realizar una búsqueda con distinción de mayúsculas y 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);
El conjunto de resultados es el siguiente:
-----------
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'
.
USE tempdb;
GO
SELECT CHARINDEX ( 'Test',
'This is a Test'
COLLATE Latin1_General_CS_AS);
El conjunto de resultados es el siguiente:
-----------
11
E. Realizar una búsqueda sin distinción de mayúsculas y minúsculas
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'
.
USE tempdb;
GO
SELECT CHARINDEX ( 'TEST',
'This is a Test'
COLLATE Latin1_General_CI_AS);
GO
El conjunto de resultados es el siguiente:
-----------
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');
El conjunto de resultados es el siguiente:
---------
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);
El conjunto de resultados es el siguiente:
---------
6
H. Resultados cuando no se encuentra la cadena
En este ejemplo se muestra el valor devuelto cuando CHARINDEX no encuentra la cadena patrón_de_cadena en la cadena buscada.
SELECT TOP(1) CHARINDEX('at', 'This is a string') FROM dbo.DimCustomer;
El conjunto de resultados es el siguiente:
---------
0
Consulte también
LEN (Transact-SQL)
PATINDEX (Transact-SQL)
String Functions (Transact-SQL) [Funciones de cadena (Transact-SQL)]
+ (Concatenación de cadenas) (Transact-SQL)
Compatibilidad con la intercalación y Unicode