PATINDEX (Transact-SQL)

Devuelve la posición inicial de la primera repetición de un patrón en la expresión especificada, o ceros si el patrón no se encuentra, en todos los tipos de datos de texto y caracteres. Para obtener más información, vea Coincidencias de patrón en condiciones de búsqueda.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

PATINDEX ( '%pattern%' , expression )

Argumentos

  • pattern
    Es una cadena literal. Se pueden incluir caracteres comodín, aunque el carácter % debe preceder y seguir a pattern (excepto cuando se busca el primer o el último carácter). pattern es una expresión de la categoría de tipo de datos de cadena de caracteres.

  • expression
    Es una expresión, normalmente una columna en la que se busca el patrón especificado. expression es de la categoría de tipo de datos de cadena de caracteres.

Tipos de valor devueltos

bigint si expression es de los tipos de datos varchar(max) o nvarchar(max); en caso contrario, int.

Notas

Si pattern o expression son NULL, PATINDEX devolverá NULL cuando el nivel de compatibilidad de la base de datos sea 70. Si el nivel de compatibilidad es 65 o anterior, PATINDEX sólo devolverá NULL cuando ambos, pattern y expression, sean NULL.

PATINDEX realiza comparaciones basadas en la intercalación de la entrada. Para realizar una comparación de una intercalación especificada, puede utilizar COLLATE para aplicar una intercalación explícita a la entrada.

Ejemplos

A. Utilizar un patrón con PATINDEX

En el siguiente ejemplo se busca la posición en que comienza el patrón ensure en una fila específica de la columna DocumentSummary de la tabla Document.

USE AdventureWorks;
GO
SELECT PATINDEX('%ensure%',DocumentSummary)
FROM Production.Document
WHERE DocumentID = 3;
GO

Éste es el conjunto de resultados.

----------- 
64          

(1 row(s) affected)

Si no restringe las filas en las que buscar con la cláusula WHERE, la consulta devolverá todas las filas de la tabla e indicará valores distintos de cero para las filas en las que se haya encontrado el patrón y cero para el resto.

B. Utilizar caracteres comodín con PATINDEX

En el ejemplo siguiente se utilizan caracteres comodín para encontrar la posición en la que comienza el patrón en_ure en una fila específica de la columna DocumentSummary de la tabla Document, donde el carácter de subrayado es un comodín que representa cualquier carácter.

USE AdventureWorks;
GO
SELECT PATINDEX('%en_ure%', DocumentSummary)
FROM Production.Document
WHERE DocumentID = 3;
GO

Éste es el conjunto de resultados.

------------
64

(1 row(s) affected)

Si no restringe las filas en las que buscar, la consulta devolverá todas las filas de la tabla e indicará valores distintos de cero para las filas en las que haya encontrado el patrón.

C. Utilizar COLLATE con PATINDEX

En el siguiente ejemplo se utiliza la función COLLATE para especificar de forma explícita la intercalación de la expresión que se está buscando.

USE tempdb;
GO
SELECT PATINDEX ( '%ein%', 'Das ist ein Test'  COLLATE Latin1_General_BIN) ;
GO