Está en la página 1de 24

Funciones de cadena

Estas funciones escalares realizan una operación sobre una cadena de


entrada y devuelven un valor de cadena o un valor numérico.

CHARINDEX
Devuelve la posición inicial de la expresión especificada en una cadena de
caracteres.

Sintaxis

CHARINDEX ( expression1 , expression2 [ , start_location ] )

Argumentos

expression1

Es una expresión que contiene la secuencia de caracteres que se desea


buscar. expression1 es una expresión del tipo de cadenas cortas de
caracteres.

expression2

Es una expresión, normalmente una columna, en la que se busca la


cadena especificada. expression2 es de la categoría del tipo de datos
cadena de caracteres.

start_location

Es la posición del carácter de expression2 en el que se empieza la


búsqueda de expression1. Si no se especifica start_location, es un número
negativo o es cero, la búsqueda empieza al principio de la cadena
expression2.

Tipos devueltos

int

Observaciones

Si expression1 o bien expression2 es de tipo de datos Unicode (nvarchar


o nchar), la expresión que no sea de tipo Unicode se convierte en
Unicode.

Si expression1 o bien expression2 son NULL, CHARINDEX devuelve


NULL si el nivel de compatibilidad de la base de datos es 70 o posterior.
Si el nivel de compatibilidad es 65 o anterior, CHARINDEX sólo
devuelve NULL cuando expression1 y expression2 son NULL.

Si expression1 no se encuentra en expression2, CHARINDEX devuelve


0.

Ejemplos

El primer ejemplo de código devuelve la posición donde empieza la


palabra "wonderful" en la columna notes de la tabla titles. El segundo
ejemplo utiliza el parámetro start_location opcional para empezar la
búsqueda de wonderful en el quinto carácter de la columna notes.El
tercer ejemplo muestra el conjunto de resultados cuando expression1 no
se encuentra en expression2.

USE pubs

GO

SELECT CHARINDEX('wonderful', notes)

FROM titles

WHERE title_id = 'TC3218'

GO

-- Use the optional start_location parameter to start searching

-- for wonderful starting with the fifth character in the notes

-- column.

USE pubs

GO

SELECT CHARINDEX('wonderful', notes, 5)

FROM titles

WHERE title_id = 'TC3218'

GO

Éste es el conjunto de resultados de la primera y segunda consulta:

-----------
46

(1 row(s) affected)

USE pubs

GO

SELECT CHARINDEX('wondrous', notes)

FROM titles

WHERE title_id='TC3218'

GO

Éste es el conjunto de resultados:

-----------

(1 row(s) affected)

LEFT
Devuelve la parte izquierda de una cadena de caracteres con el número de
caracteres especificado.

Sintaxis

LEFT ( character_expression , integer_expression )

Argumentos

character_expression

Es una expresión de caracteres o de datos binarios. character_expression


puede ser una constante, una variable o una columna, y puede ser de
cualquier tipo de datos (excepto text o ntext) que se pueda convertir
implícitamente a varchar o nvarchar. En caso contrario, puede usar la
función CAST para convertir character_expression explícitamente.
integer_expression

Es un entero positivo que especifica cuántos caracteres de


character_expression se devolverán. Si integer_expression es negativo, se
devuelve un error.

Tipos devueltos

varchar o nvarchar

Observaciones

Los niveles de compatibilidad pueden afectar a los valores devueltos. Para


obtener más información acerca de los niveles de compatibilidad, consulte
sp_dbcmptlevel.

Ejemplos

A. Utilizar LEFT con una columna

Este ejemplo devuelve los cinco caracteres situados más a la izquierda de


cada título de libro.

USE pubs

GO

SELECT LEFT(title, 5)

FROM titles

ORDER BY title_id

GO

El siguiente es el conjunto de resultados:

-----

The B

Cooki

You C

Strai

Silic

The G
The P

But I

Secre

Net E

Compu

Is An

Life

Prolo

Emoti

Onion

Fifty

Sushi

(18 row(s) affected)

B. Utilizar LEFT con una cadena de caracteres

Este ejemplo utiliza LEFT para obtener los dos caracteres situados más a
la izquierda de la cadena de caracteres abcdefg.

SELECT LEFT('abcdefg',2)

GO

El siguiente es el conjunto de resultados:

--

ab

(1 row(s) affected)
LEN
Devuelve el número de caracteres, en lugar del número de bytes, de la
expresión de cadena dada, excluidos los espacios finales en blanco.

Sintaxis

LEN ( string_expression )

Argumentos

string_expression

Es la expresión de cadena que debe evaluarse.

Tipos devueltos

int

Ejemplos

Este ejemplo selecciona el número de caracteres y los datos de


CompanyName de las empresas ubicadas en Finlandia.

USE Northwind

GO

SELECT LEN(CompanyName) AS 'Length', CompanyName

FROM Customers

WHERE Country = 'Finland'

El siguiente es el conjunto de resultados:

Length CompanyName

----------- ------------------------------

14 Wartian Herkku

11 Wilman Kala
LOWER
Devuelve una expresión de caracteres después de convertir a minúsculas
los datos de caracteres que estén en mayúsculas.

Sintaxis

LOWER ( character_expression )

Argumentos

character_expression

Es una expresión de caracteres o de datos binarios. character_expression


puede ser una constante, una variable o una columna, y debe ser de un
tipo de datos que se pueda convertir implícitamente a varchar. De lo
contrario, puede utilizar la función CAST para convertir
character_expression explícitamente.

Tipos devueltos

varchar

Ejemplos

Este ejemplo utiliza la función LOWER y la función UPPER, y anida la


función UPPER en la función LOWER al seleccionar títulos de libros
cuyos precios sean entre 11$ y 20$.

USE pubs

GO

SELECT LOWER(SUBSTRING(title, 1, 20)) AS Lower,

UPPER(SUBSTRING(title, 1, 20)) AS Upper,

LOWER(UPPER(SUBSTRING(title, 1, 20))) As LowerUpper

FROM titles

WHERE price between 11.00 and 20.00

GO

El siguiente es el conjunto de resultados:

Lower Upper LowerUpper


-------------------- -------------------- --------------------

the busy executive's THE BUSY EXECUTIVE'S the busy executive's

cooking with compute COOKING WITH COMPUTE cooking with


compute

straight talk about STRAIGHT TALK ABOUT straight talk about

silicon valley gastr SILICON VALLEY GASTR silicon valley gastr

secrets of silicon v SECRETS OF SILICON V secrets of silicon v

prolonged data depri PROLONGED DATA DEPRI prolonged data


depri

fifty years in bucki FIFTY YEARS IN BUCKI fifty years in bucki

sushi, anyone? SUSHI, ANYONE? sushi, anyone?

(8 row(s) affected)

LTRIM
Devuelve una expresión de caracteres después de quitar los espacios en
blanco a la izquierda.

Sintaxis

LTRIM ( character_expression )

Argumentos

character_expression

Es una expresión de caracteres o de datos binarios. character_expression


puede ser una constante, una variable o una columna, y debe ser de un
tipo de datos que se pueda convertir implícitamente a varchar. De lo
contrario, puede utilizar la función CAST para convertir
character_expression explícitamente.

Tipos devueltos

varchar

Observaciones
Los niveles de compatibilidad pueden afectar a los valores devueltos. Para
obtener más información acerca de los niveles de compatibilidad, consulte
sp_dbcmptlevel.

Ejemplos

Este ejemplo utiliza LTRIM para quitar los espacios iniciales de una
variable de caracteres.

DECLARE @string_to_trim varchar(60)

SET @string_to_trim = ' Five spaces are at the beginning of this

string.'

SELECT 'Here is the string without the leading spaces: ' +

LTRIM(@string_to_trim)

GO

El siguiente es el conjunto de resultados:

------------------------------------------------------------------------

Here is the string without the leading spaces: Five spaces are at the
beginning of this string.

(1 row(s) affected)

PATINDEX
Devuelve la posición inicial de la primera aparición de un patrón en la
expresión especificada o ceros si el patrón no se encuentra, con todos los
tipos de datos de texto y caracteres.

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 carácter corto.

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 devueltos

int

Observaciones

PATINDEX resulta de utilidad con los tipos de datos text y se puede


utilizar en una cláusula WHERE además de IS NULL, IS NOT NULL y
LIKE (las únicas comparaciones válidas con text en una cláusula
WHERE).

Si pattern o expression son NULL, PATINDEX devolverá NULL si el


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

Ejemplos

A. Utilizar un patrón con PATINDEX

En este ejemplo se busca la posición en que comienza el patrón


"wonderful" en una fila específica de la columna notes de la tabla titles.

USE pubs

GO

SELECT PATINDEX('%wonderful%', notes)

FROM titles

WHERE title_id = 'TC3218'

GO

El siguiente es el conjunto de resultados:

-----------

46
(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 este ejemplo se utilizan comodines para encontrar la posición en la


que comienza el patrón "won_erful" en una fila específica de la columna
notes de la tabla titles, donde el carácter de subrayado es un comodín que
representa cualquier carácter.

USE pubs

GO

SELECT PATINDEX('%won_erful%', notes)

FROM titles

WHERE title_id = 'TC3218'

GO

El siguiente es el conjunto de resultados:

------------

46

(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.

REPLACE
Reemplaza por una tercera expresión todas las apariciones de la segunda
expresión de cadena proporcionada en la primera expresión de cadena.

Sintaxis

REPLACE ( 'string_expression1' , 'string_expression2' ,


'string_expression3' )
Argumentos

'string_expression1'

Expresión de cadena en la que se realiza la búsqueda. string_expression1


puede contener caracteres o datos binarios.

'string_expression2'

Expresión de cadena que se intentará buscar. string_expression2 puede


contener caracteres o datos binarios.

'string_expression3'

Expresión de cadena de reemplazo. string_expression3 puede contener


caracteres o datos binarios.

Tipos devueltos

Devuelve datos de caracteres si string_expression (1, 2 ó 3) es de uno de


los tipos de datos de caracteres admitidos. Devuelve datos binarios si
string_expression (1, 2 ó 3) es de uno de los tipos de datos binary
admitidos.

Ejemplos

En este ejemplo se reemplaza la cadena "cde" de "abcdefghi" por "xxx".

SELECT REPLACE('abcdefghicde','cde','xxx')

GO

El siguiente es el conjunto de resultados:

------------

abxxxfghixxx

(1 row(s) affected)

REPLICATE
Repite una expresión de caracteres un número especificado de veces.

Sintaxis

REPLICATE ( character_expression , integer_expression )


Argumentos

character_expression

Es una expresión alfanumérica de caracteres. character_expression puede


ser una constante, una variable o una columna, tanto de caracteres como
de datos binarios.

integer_expression

Es un número entero positivo. Si integer_expression es negativo, se


devuelve una cadena NULL.

Tipos devueltos

varchar

character_expression debe ser un tipo de datos convertible implícitamente


a varchar. En caso contrario, utilice la función CAST para convertir
character_expression explícitamente.

Observaciones

Los niveles de compatibilidad pueden afectar a los valores devueltos. Para


obtener más información, consulte sp_dbcmptlevel.

Ejemplos

A. Utilizar REPLICATE

En este ejemplo se duplica el nombre de cada autor dos veces.

USE pubs

SELECT REPLICATE(au_fname, 2)

FROM authors

ORDER BY au_fname

El siguiente es el conjunto de resultados:

----------------------

AbrahamAbraham

AkikoAkiko

AlbertAlbert

AnnAnn
AnneAnne

BurtBurt

CharleneCharlene

CherylCheryl

DeanDean

DirkDirk

HeatherHeather

InnesInnes

JohnsonJohnson

LiviaLivia

MarjorieMarjorie

MeanderMeander

MichaelMichael

MichelMichel

MorningstarMorningstar

ReginaldReginald

SherylSheryl

StearnsStearns

SylviaSylvia

(23 row(s) affected)


REVERSE
Devuelve invertida una expresión de carácter.

Sintaxis

REVERSE ( character_expression )

Argumentos

character_expression

Es una expresión de datos de tipo carácter. character_expression puede


ser una constante, una variable o una columna de datos de tipo carácter o
binarios.

Tipos devueltos

varchar

Observaciones

character_expression debe ser un tipo de datos convertible implícitamente


a varchar. De lo contrario, puede utilizar la función CAST para convertir
character_expression explícitamente.

Ejemplos

En este ejemplo se devuelve el nombre de todos los autores con los


caracteres invertidos.

USE pubs

GO

SELECT REVERSE(au_fname)

FROM authors

ORDER BY au_fname

GO

El siguiente es el conjunto de resultados:

--------------------

maharbA

okikA
treblA

nnA

ennA

truB

enelrahC

lyrehC

naeD

kriD

rehtaeH

sennI

nosnhoJ

aiviL

eirojraM

rednaeM

leahciM

lehciM

ratsgninroM

dlanigeR

lyrehS

snraetS

aivlyS

(23 row(s) affected)


RIGHT
Nueva información: septiembre de 2001.

Devuelve la parte derecha de una cadena de caracteres con el número de


caracteres especificado.

Sintaxis

RIGHT ( character_expression , integer_expression )

Argumentos

character_expression

Es una expresión de datos de tipo carácter o binarios.


character_expression puede ser una constante, una variable o una
columna. character_expression puede ser de cualquier tipo de datos
(excepto text o ntext) convertible implícitamente a varchar o nvarchar. En
caso contrario, puede usar la función CAST para convertir
character_expression explícitamente.

integer_expression

Es un entero positivo que especifica el número de caracteres de


character_expression que se devolverán. Si el valor de integer_expression
es negativo, se devuelve un error.

Tipos devueltos

varchar o nvarchar

Observaciones

Los niveles de compatibilidad pueden afectar a los valores devueltos. Para


obtener más información, consulte sp_dbcmptlevel.

Ejemplos

En este ejemplo se devuelven los cinco caracteres que se encuentran más


a la derecha del nombre de cada autor.

USE pubs

GO

SELECT RIGHT(au_fname, 5)

FROM authors
ORDER BY au_fname

GO

El siguiente es el conjunto de resultados:

------------------

raham

Akiko

lbert

Ann

Anne

Burt

rlene

heryl

Dean

Dirk

ather

Innes

hnson

Livia

jorie

ander

chael

ichel

gstar

inald

heryl
earns

ylvia

(23 row(s) affected)

RTRIM
Devuelve una cadena de caracteres después de truncar todos los espacios
en blanco a la derecha.

Sintaxis

RTRIM ( character_expression )

Argumentos

character_expression

Es una expresión de datos de tipo carácter. character_expression puede


ser una constante, una variable o una columna de datos de tipo carácter o
binarios.

Tipos devueltos

varchar

Observaciones

character_expression debe ser un tipo de datos convertible implícitamente


a varchar. En caso contrario, puede usar la función CAST para convertir
character_expresion explícitamente.

Nota Los niveles de compatibilidad pueden afectar a los valores


devueltos. Para obtener más información, consulte sp_dbcmptlevel.

Ejemplos

Este ejemplo muestra cómo utilizar RTRIM para quitar los espacios a la
derecha de una variable de caracteres.

DECLARE @string_to_trim varchar(60)

SET @string_to_trim = 'Four spaces are after the period in this


sentence. '

SELECT 'Here is the string without the leading spaces: ' + CHAR(13) +
RTRIM(@string_to_trim)

GO

El siguiente es el conjunto de resultados:

(1 row(s) affected)

------------------------------------------------------------------------

Here is the string without the leading spaces: Four spaces are after the
period in this sentence.

(1 row(s) affected)

SUBSTRING
Devuelve parte de una expresión de caracteres, binaria, de texto o de
imagen. Para obtener más información acerca de los tipos de datos
válidos de Microsoft® SQL Server™ que pueden utilizarse con esta
función, consulte Tipos de datos.

Sintaxis

SUBSTRING ( expression , start , length )

Argumentos

expression

Es una cadena de caracteres, cadena binaria, texto, imagen, columna o


expresión que incluye una columna. No deben usarse expresiones que
incluyan funciones de agregado.

start

Es un entero que especifica el punto en que comienza la subcadena.

length

Es un entero positivo que especifica el número de caracteres o de bytes


de expression que se devuelven. Si length es negativo, se devuelve un
error.

Nota Debido a que start y length especifican el número de bytes cuando


SUBSTRING se utiliza con datos de tipo text, los datos DBCS, por
ejemplo los de Kanji, pueden causar que haya caracteres divididos al
comienzo o al final del resultado. Este comportamiento es coherente con
la forma en que READTEXT controla DBCS. Sin embargo, debido al
resultado poco habitual, es aconsejable utilizar ntext en lugar de text para
los caracteres DBCS.

Tipos devueltos

Devuelve datos de tipo carácter si expression es de alguno de los tipos de


datos de caracteres admitidos. Devuelve datos binarios si expression es de
alguno de los tipos binary admitidos.

La cadena devuelta es del mismo tipo que la expresión indicada, con las
excepciones mostradas en esta tabla:

Expresión Tipo devuelto


especificada
text varchar
image varbinary
ntext nvarchar

Observaciones

Con los tipos de datos ntext, char o varchar, los desplazamientos (start y
length) deben especificarse en número de caracteres. Los desplazamientos
para los tipos de datos text, image, binary o varbinary se deben especificar
en número de bytes.

Nota Los niveles de compatibilidad pueden afectar a los valores


devueltos. Para obtener más información acerca de los niveles de
compatibilidad, consulte sp_dbcmptlevel.

Ejemplos

A. Utilizar SUBSTRING con una cadena de caracteres

En el ejemplo siguiente se muestra cómo obtener parte de una cadena de


caracteres. En la tabla authors, esta consulta obtiene los apellidos en una
columna y sólo la primera inicial en la segunda columna.

USE pubs

SELECT au_lname, SUBSTRING(au_fname, 1, 1)

FROM authors

ORDER BY au_lname

El siguiente es el conjunto de resultados:

au_lname

---------------------------------------- -
Bennet A

Blotchet-Halls R

Carson C

DeFrance M

del Castillo I

...

Yokomoto A

(23 row(s) affected)

He aquí cómo mostrar el segundo, tercer y cuarto caracteres de la


constante de cadena abcdef.

SELECT x = SUBSTRING('abcdef', 2, 3)

El siguiente es el conjunto de resultados:

----------

bcd

(1 row(s) affected)

UPPER
Devuelve una expresión de tipo carácter con datos de carácter en
minúscula convertidos a mayúscula.

Sintaxis

UPPER ( character_expression )

Argumentos

character_expression
Es una expresión de datos de tipo carácter. character_expression puede
ser una constante, una variable o una columna de datos de tipo carácter o
binarios.

Tipos devueltos

varchar

Observaciones

character_expression debe ser un tipo de datos convertible implícitamente


a varchar. En caso contrario, puede usar la función CAST para convertir
character_expresion explícitamente.

Ejemplos

En este ejemplo se utilizan las funciones UPPER y RTRIM para devolver


el primer apellido del autor concatenado con el nombre.

USE pubs

GO

SELECT UPPER(RTRIM(au_lname)) + ', ' + au_fname AS Name

FROM authors

ORDER BY au_lname

GO

El siguiente es el conjunto de resultados:

Name

--------------------------------------------------------------

BENNET, Abraham

BLOTCHET-HALLS, Reginald

CARSON, Cheryl

DEFRANCE, Michel

DEL CASTILLO, Innes

DULL, Ann

GREEN, Marjorie
GREENE, Morningstar

GRINGLESBY, Burt

HUNTER, Sheryl

KARSEN, Livia

LOCKSLEY, Charlene

MACFEATHER, Stearns

MCBADDEN, Heather

O'LEARY, Michael

PANTELEY, Sylvia

RINGER, Albert

RINGER, Anne

SMITH, Meander

STRAIGHT, Dean

STRINGER, Dirk

WHITE, Johnson

YOKOMOTO, Akiko

(23 row(s) affected)

También podría gustarte