Anda di halaman 1dari 44

Funciones de cadena (Transact-SQL)

Estas funciones escalares realizan una operación sobre un valor de cadena de entrada y devuelven un valor
de cadena o un valor numérico:

ASCII NCHAR SOUNDEX

CHAR PATINDEX SPACE

CHARINDEX QUOTENAME STR

DIFFERENCE REPLACE STUFF

LEFT REPLICATE SUBSTRING

LEN REVERSE UNICODE

LOWER RIGHT UPPER

LTRIM RTRIM

ASCII (Transact-SQL)
Devuelve el valor de código ASCII del carácter situado más a la izquierda de una expresión de caracteres.

Sintaxis

ASCII ( character_expression )
Argumentos

character_expression
Es una expresión de tipo char o varchar.

Tipos de valor devueltos

int

Ejemplos

En el ejemplo siguiente se da por supuesto un juego de caracteres ASCII y se devuelve el valor ASCII y el
carácter CHAR para cada carácter de la cadena Du monde entier.
Copiar código

SET TEXTSIZE 0
SET NOCOUNT ON
-- Create the variables for the current character string position
-- and for the character string.
DECLARE @position int, @string char(15)
-- Initialize the variables.
SET @position = 1
SET @string = 'Du monde entier'
WHILE @position <= DATALENGTH(@string)
BEGIN
SELECT ASCII(SUBSTRING(@string, @position, 1)),
CHAR(ASCII(SUBSTRING(@string, @position, 1)))
SET @position = @position + 1
END
SET NOCOUNT OFF
GO

CHAR (Transact-SQL)
Convierte un código ASCII int en un carácter.

Convenciones de sintaxis de Transact-SQL

Sintaxis

CHAR ( integer_expression )
Argumentos

integer_expression
Es un entero entre 0 y 255. Devuelve NULL si la expresión de entero no se encuentra dentro de
dicho intervalo.

Tipos de valor devueltos

char(1)

Notas

CHAR se puede utilizar para insertar caracteres de control en cadenas de caracteres. En la siguiente tabla se
muestran algunos caracteres de control utilizados con frecuencia.

Carácter de control Valor

Tabulación char(9)

Avance de línea char(10)

Retorno de carro char(13)

Ejemplos

A. Usar ASCII y CHAR para imprimir los valores ASCII de una cadena
En el siguiente ejemplo se imprimen el valor y el carácter ASCII de cada carácter de la cadena New Moon.
Copiar código

SET TEXTSIZE 0
-- Create variables for the character string and for the current
-- position in the string.
DECLARE @position int, @string char(8)
-- Initialize the current position and the string variables.
SET @position = 1
SET @string = 'New Moon'
WHILE @position <= DATALENGTH(@string)
BEGIN
SELECT ASCII(SUBSTRING(@string, @position, 1)),
CHAR(ASCII(SUBSTRING(@string, @position, 1)))
SET @position = @position + 1
END
GO

CHARINDEX (Transact-SQL)
Busca el valor expression2 de expression1 y devuelve su posición inicial si se localiza. La búsqueda se inicia
en start_location.

Sintaxis

CHARINDEX ( expression1 ,expression2 [ , start_location ] )


Argumentos

expression1
Es una expresión de caracteres que contiene la secuencia que se va a buscar. expression1 tiene un
límite de 8.000 caracteres.

expression2
Es la expresión de caracteres que se va a buscar.

start_location
Es un entero o expresión bigint donde se inicia la búsqueda. Si no se especifica el parámetro
start_location o bien es un número negativo o es igual a cero, la búsqueda comienza al principio de
expression2.

Tipos de valor devueltos

bigint si expression2 es de tipo varchar(max), nvarchar(max) o varbinary(max); en caso contrario,


int.

Notas

Si uno de los parámetros expression1 o expression2 es de tipo de datos Unicode (nvarchar o nchar) y el
otro no, la expresión que no sea de tipo Unicode se convierte en Unicode. CHARINDEX no se puede usar con
los tipos de datos text, ntext o image.

Si expression1 o expression2 son de tipo NULL, CHARINDEX devuelve NULL cuando el nivel de
compatibilidad de la base de datos es 70 o superior. Si el nivel de compatibilidad de la base de datos es 65 o
inferior, CHARINDEX devuelve NULL sólo cuando los dos parámetros expression1 y expression2 son NULL.

Si expression1 no se encuentra en expression2, CHARINDEX devuelve 0.

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

La posición inicial devuelta es de base 1, no de base 0.

Ejemplos

El siguiente ejemplo devuelve la posición en la que empieza la secuencia de caracteres bicycle en la


columna DocumentSummary de la tabla Document.
Copiar código

DECLARE @document varchar(64)

SELECT @document = 'Reflectors are vital safety' +


' components of your bicycle.'
SELECT CHARINDEX('bicycle', @document)
GO
Éste es el conjunto de resultados.

Copiar código

-----------
48
En el siguiente ejemplo se utiliza el parámetro opcional start_location para empezar la búsqueda de vital
en el quinto carácter de la columna DocumentSummary.
Copiar código

DECLARE @document varchar(64)

SELECT @document = 'Reflectors are vital safety' +


' components of your bicycle.'
SELECT CHARINDEX('vital', @document, 5)
GO
Éste es el conjunto de resultados.

Copiar código

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

(1 row(s) affected)
En el siguiente ejemplo se muestra el conjunto de resultados cuando el parámetro expression1 no se
encuentra en expression2.

Copiar código

DECLARE @document varchar(64)

SELECT @document = 'Reflectors are vital safety' +


' components of your bicycle.'
SELECT CHARINDEX('bike', @document)
GO
Éste es el conjunto de resultados.

Copiar código

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

(1 row(s) affected)
En el siguiente ejemplo se realiza una búsqueda con distinción entre mayúsculas y minúsculas de la cadena
'TEST' en 'Das jst ein Test'.
Copiar código

USE tempdb;
GO
--perform a case sensitive search
SELECT CHARINDEX ( 'TEST',
'Das ist ein Test'
COLLATE Latin1_General_CS_AS)
Éste es el conjunto de resultados.

Copiar código

-----------
0
En el siguiente ejemplo se realiza una búsqueda con distinción entre mayúsculas y minúsculas de la cadena
'Test' en 'Das jst ein Test'.
Copiar código

USE tempdb;
GO
SELECT CHARINDEX ( 'Test',
'Das ist ein Test'
COLLATE Latin1_General_CS_AS)
Éste es el conjunto de resultados.

Copiar código

-----------
13
En el siguiente ejemplo se realiza una búsqueda sin distinción entre mayúsculas y minúsculas de la cadena
'TEST' en 'Das jst ein Test'.
Copiar código

USE tempdb;
GO
SELECT CHARINDEX ( 'Test',
'Das ist ein Test'
COLLATE Latin1_General_CI_AS)
GO

DIFFERENCE (Transact-SQL)
Devuelve un valor entero que indica la diferencia entre los valores de SOUNDEX de dos expresiones de
caracteres.
Convenciones de sintaxis de Transact-SQL

Sintaxis

DIFFERENCE ( character_expression , character_expression )


Argumentos

character_expression
Es una expresión de tipo char o varchar. character_expression puede ser también de tipo text; no
obstante, sólo los primeros 8.000 bytes son significativos.

Tipos de valor devueltos

int

Notas

El entero devuelto es el número de caracteres de los valores de SOUNDEX que son iguales. El valor devuelto
puede oscilar entre 0 y 4, donde 0 indica una similitud escasa o inexistente, y 4 indica una elevada similitud
o los mismos valores.

Ejemplos

En la primera parte del ejemplo siguiente, se comparan los valores de SOUNDEX de dos cadenas muy
similares, y DIFFERENCE devuelve un valor de 4. En la segunda parte, se comparan los valores de
SOUNDEX de dos cadenas muy diferentes, y DIFFERENCE devuelve un valor de 0.
Copiar código

USE AdventureWorks;
GO
-- Returns a DIFFERENCE value of 4, the least possible difference.
SELECT SOUNDEX('Green'), SOUNDEX('Greene'), DIFFERENCE('Green','Greene');
GO
-- Returns a DIFFERENCE value of 0, the highest possible difference.
SELECT SOUNDEX('Blotchet-Halls'), SOUNDEX('Greene'),
DIFFERENCE('Blotchet-Halls', 'Greene');
GO

LEFT (Transact-SQL)
Devuelve la parte izquierda de una cadena de caracteres con el número de caracteres especificado.

Convenciones de sintaxis de Transact-SQL

Sintaxis

LEFT ( character_expression , integer_expression )


Argumentos

character_expression
Es una expresión de datos de caracteres o binarios. character_expression puede ser una constante,
variable o columna. El tipo de datos de character_expression puede ser cualquiera, excepto text y
ntext, que se pueda convertir implícitamente a varchar y nvarchar. De lo contrario, utilice 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 van a devolver.
Si integer_expression es negativo, se devuelve un error. Si integer_expression es del tipo bigint y
contiene un valor grande, character_expression debe ser de un tipo de datos de valor grande como
varchar(max).

Tipos de valor devueltos

Devuelve varchar cuando character_expression es de un tipo de datos de caracteres no Unicode.

Devuelve nvarchar cuando character_expression es de un tipo de datos de caracteres Unicode.

Notas

Los niveles de compatibilidad pueden afectar a los valores devueltos. Para obtener más información acerca
de los niveles de compatibilidad, vea sp_dbcmptlevel (Transact-SQL).

Ejemplos

A. Utilizar LEFT con una columna


En el ejemplo siguiente se devuelven los cinco caracteres situados más a la izquierda de cada nombre de
producto.

Copiar código

USE AdventureWorks;
GO
SELECT LEFT(Name, 5)
FROM Production.Product
ORDER BY ProductID;
GO
B. Utilizar LEFT con una cadena de caracteres
En el ejemplo siguiente se utiliza LEFT para devolver los dos caracteres situados más a la izquierda de la
cadena de caracteres abcdefg.
Copiar código

SELECT LEFT('abcdefg',2)
GO

LEN (Transact-SQL)
Devuelve el número de caracteres de la expresión de cadena especificad, exluidos los espacios en blanco
finales.

Nota:

Para devolver el número de bytes usado para representar una expresión, utilice la función
DATALENGTH.

Convenciones de sintaxis de Transact-SQL


Sintaxis

LEN ( string_expression )
Argumentos

string_expression
Es la cadena expresión que se va a evaluar. string_expression puede ser una constante, una
variable o una columna de datos binarios o de caracteres.

Tipos de valor devueltos

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


contrario, int.

Ejemplos

El ejemplo siguiente selecciona el número de caracteres y los datos en FirstName para las personas que
se encuentran en Australia.
Copiar código

USE AdventureWorks;
GO
SELECT LEN(FirstName) AS Length, FirstName, LastName
FROM Sales.vIndividualCustomer
WHERE CountryRegionName = 'Australia';
GO

LOWER (Transact-SQL)
Devuelve una expresión de caracteres después de convertir en minúsculas los datos de caracteres en
mayúsculas.

Convenciones de sintaxis de Transact-SQL

Sintaxis

LOWER ( character_expression )
Argumentos

character_expression
Es una expresión de datos binarios o de caracteres. character_expression puede ser una constante,
una variable o una columna. character_expression debe ser de un tipo de datos que se pueda
convertir implícitamente a varchar. De lo contrario, utilice CAST para convertir
character_expression explícitamente.

Tipos de valor devueltos

varchar o bien nvarchar

Ejemplos

En este ejemplo se utiliza la función LOWER y la función UPPER, y se anida la función UPPER en la función
LOWER al seleccionar títulos de libros cuyos precios sean entre 11$ y 20$.
Copiar código
USE AdventureWorks;
GO
SELECT LOWER(SUBSTRING(Name, 1, 20)) AS Lower,
UPPER(SUBSTRING(Name, 1, 20)) AS Upper,
LOWER(UPPER(SUBSTRING(Name, 1, 20))) As LowerUpper
FROM Production.Product
WHERE ListPrice between 11.00 and 20.00;
GO

LTRIM (Transact-SQL)
Devuelve una expresión de caracteres tras quitar todos los espacios iniciales en blanco.

Convenciones de sintaxis de Transact-SQL

Sintaxis

LTRIM ( character_expression )
Argumentos

character_expression
Es una expresión de datos binarios o de caracteres. character_expression puede ser una constante,
una variable o una columna. character_expression debe ser un tipo de datos, excepto text, ntext y
image, implícitamente convertibles a varchar. De lo contrario, utilice CAST para convertir
character_expression explícitamente.

Tipo de valor devuelto

varchar o bien nvarchar

Notas

Los niveles de compatibilidad pueden afectar a los valores devueltos. Para obtener más información acerca
de los niveles de compatibilidad, vea sp_dbcmptlevel (Transact-SQL).

Ejemplos

En el siguiente ejemplo se utiliza LTRIM para quitar espacios iniciales de una variable de caracteres.
Copiar código

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

NCHAR (Transact-SQL)
Devuelve el carácter Unicode correspondiente al código entero dado, tal como se define en el estándar
Unicode.

Convenciones de sintaxis de Transact-SQL


Sintaxis

NCHAR ( integer_expression )
Argumentos

integer_expression
Es un número entero positivo comprendido entre 0 y 65535. Si se especifica un valor fuera de este
intervalo, se devuelve NULL.

Tipos de valor devueltos

nchar(1)

Ejemplos

A. Utilizar NCHAR y UNICODE


En el siguiente ejemplo se utilizan las funciones UNICODE y NCHAR para imprimir el valor UNICODE y
NCHAR (carácter Unicode) del segundo carácter de la cadena de caracteres København, y para imprimir el
segundo carácter real, ø.
Copiar código

DECLARE @nstring nchar(8)


SET @nstring = N'København'
SELECT UNICODE(SUBSTRING(@nstring, 2, 1)),
NCHAR(UNICODE(SUBSTRING(@nstring, 2, 1)))
GO
Éste es el conjunto de resultados.

Copiar código

----------- -
248 ø(1 row(s) affected)
B. Utilizar SUBSTRING, UNICODE, CONVERT y NCHAR
En el siguiente ejemplo se utilizan las funciones SUBSTRING, UNICODE, CONVERT y NCHAR para
imprimir el número de carácter, el carácter Unicode y el valor de UNICODE para cada uno de los caracteres
de la cadena København.
Copiar código

-- The @position variable holds the position of the character currently


-- being processed. The @nstring variable is the Unicode character
-- string to process.
DECLARE @position int, @nstring nchar(9)
-- Initialize the current position variable to the first character in
-- the string.
SET @position = 1
-- Initialize the character string variable to the string to process.
-- Notice that there is an N before the start of the string. This
-- indicates that the data following the N is Unicode data.
SET @nstring = N'København'
-- Print the character number of the position of the string you are at,
-- the actual Unicode character you are processing, and the UNICODE
-- value for this particular character.
PRINT 'Character #' + ' ' + 'Unicode Character' + ' ' + 'UNICODE Value'
WHILE @position <= DATALENGTH(@nstring)
BEGIN
SELECT @position,
NCHAR(UNICODE(SUBSTRING(@nstring, @position, 1))),
CONVERT(NCHAR(17), SUBSTRING(@nstring, @position, 1)),
UNICODE(SUBSTRING(@nstring, @position, 1))
SELECT @position = @position + 1
END
GO

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.

Convenciones 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.
Copiar código

USE AdventureWorks;
GO
SELECT PATINDEX('%ensure%',DocumentSummary)
FROM Production.Document
WHERE DocumentID = 3;
GO
Éste es el conjunto de resultados.

Copiar código

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

Copiar código

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

QUOTENAME (Transact-SQL)
Devuelve una cadena Unicode con los delimitadores agregados para convertirla en un identificador
delimitado válido de Microsoft SQL Server.

Convenciones de sintaxis de Transact-SQL

Sintaxis

QUOTENAME ( 'character_string' [ , 'quote_character' ] )


Argumentos

'character_string'
Es una cadena de datos de caracteres Unicode. character_string es sysname y está limitado a 128
caracteres. Las entradas mayores de 128 caracteres devuelven NULL.

'quote_character'
Es una cadena de un solo carácter que se utiliza como delimitador. Puede ser una comilla simple ('),
un corchete izquierdo o derecho ([ ]) o una comilla doble ("). Si no se especifica quote_character,
se utilizarán corchetes.

Tipos de valor devueltos

nvarchar(258)

Ejemplos

En el siguiente ejemplo se toma la cadena de caracteres abc[]def y se utilizan los caracteres [ y ] para
crear un identificador delimitado de SQL Server válido.

Copiar código

SELECT QUOTENAME('abc[]def')

REPLACE (Transact-SQL)
Reemplaza todas las instancias de un valor de cadena especificado por otro valor de cadena.

Convenciones de sintaxis de Transact-SQL

Sintaxis

REPLACE ( string_expression , string_pattern , string_replacement )


Argumentos

string_expression
Es la expresión de cadena en la que se va a buscar. string_expression puede tener un tipo de datos
de carácter o binario.

string_pattern
Es la subcadena que se va a buscar. string_pattern puede ser de un tipo de datos de carácter o
binario. string_pattern no puede ser una cadena vacía (").

string_replacement
Cadena de reemplazo. string_replacement puede tener un tipo de datos de carácter o binario.

Tipos de valor devueltos

Devuelve nvarchar si uno de los argumentos de entrada tiene el tipo de datos nvarchar; de lo contrario,
REPLACE devuelve varchar.

Devuelve NULL si alguno de los argumentos es NULL.

Notas

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

Ejemplos

El siguiente ejemplo reemplaza la cadena cde de abcdefghi por xxx.


Copiar código

SELECT REPLACE('abcdefghicde','cde','xxx');
GO
Éste es el conjunto de resultados.

Copiar código

------------
abxxxfghixxx
(1 row(s) affected)
El siguiente ejemplo utiliza la función COLLATE.
Copiar código

SELECT REPLACE('Das ist einTest' COLLATE Latin1_General_BIN,


'Test', 'desk' );
GO

REPLICATE (Transact-SQL)
Repite un valor de cadena un número especificado de veces.

Convenciones de sintaxis de Transact-SQL

Sintaxis

REPLICATE ( string_expression ,integer_expression )


Argumentos

string_expression
Es una expresión de una cadena de caracteres o tipo de datos binario. string_expression puede ser
un dato de carácter o binario.

Nota:

Si string_expression no es de tipo varchar(max) o nvarchar(max), REPLICATE trunca el valor


devuelto en 8.000 bytes. Para devolver valores mayores de 8.000 bytes, string_expression debe
convertirse explícitamente al tipo de datos de valores grandes apropiado.

integer_expression
Es una expresión de cualquier tipo entero, incluido bigint. Si integer_expression es negativo, se
devuelve NULL.

Tipos de valor devueltos

Devuelve el mismo tipo que string_expression.

Notas

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

Ejemplos

A. Usar REPLICATE
El ejemplo siguiente replica un carácter 0 cuatro veces delante de un código de línea de producción en la
base de datos AdventureWorks.
Copiar código

USE AdventureWorks
GO
SELECT [Name]
, REPLICATE('0', 4) + [ProductLine] AS 'Line Code'
FROM [Production].[Product]
WHERE [ProductLine] = 'T'
ORDER BY [Name]
GO

REVERSE (Transact-SQL)
Devuelve un valor de cadena invertido.

Convenciones de sintaxis de Transact-SQL

Sintaxis

REVERSE ( string_expression )
Argumentos

string_expression
string_expression es una expresión de una cadena o un tipo de datos binario. string_expression
puede ser una constante, una variable o una columna de caracteres o datos binarios.

Tipos de valor devueltos

varchar o bien nvarchar

Notas

string_expression debe ser de un tipo de datos que se pueda convertir implícitamente a varchar. De lo
contrario, utilice CAST para convertir string_expression explícitamente.

Ejemplos

En el ejemplo siguiente se devuelven los nombres de todos los contactos con los caracteres invertidos.

Copiar código

USE AdventureWorks;
GO
SELECT FirstName, REVERSE(FirstName) AS Reverse
FROM Person.Contact
WHERE ContactID < 5
ORDER BY FirstName;
GO

RIGHT (Transact-SQL)
Devuelve la parte derecha de una cadena de caracteres con el número de caracteres especificado.

Convenciones de sintaxis de Transact-SQL


Sintaxis

RIGHT ( character_expression , integer_expression )


Argumentos

character_expression
Es una expresión de datos de caracteres o binarios. character_expression puede ser una constante,
variable o columna. El tipo de datos de character_expression puede ser cualquiera, excepto text y
ntext, que se pueda convertir implícitamente a varchar y nvarchar. De lo contrario, utilice 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. Si integer_expression es del tipo bigint y
contiene un valor grande, character_expression debe ser de un tipo de datos de valor grande como
varchar(max).

Tipos de valor devueltos

Devuelve varchar cuando character_expression es de un tipo de datos de caracteres no Unicode.

Devuelve nvarchar cuando character_expression es de un tipo de datos de caracteres Unicode.

Notas

Los niveles de compatibilidad pueden afectar a los valores devueltos. Para obtener más información, vea
sp_dbcmptlevel (Transact-SQL).

Ejemplos

En el ejemplo siguiente se devuelven los cinco caracteres situados más a la derecha del nombre de cada
contacto.

Copiar código

USE AdventureWorks;
GO
SELECT RIGHT(FirstName, 5) AS 'First Name'
FROM Person.Contact
WHERE ContactID < 5
ORDER BY FirstName;
GO

RTRIM (Transact-SQL)
Devuelve una cadena de caracteres después de truncar todos los espacios en blanco finales.

Convenciones de sintaxis de Transact-SQL

Sintaxis

RTRIM ( character_expression )
Argumentos

character_expression
Es una expresión de datos de caracteres. character_expression puede ser una constante, una
variable o una columna de datos binarios o de caracteres.
character_expression debe ser de un tipo de datos que se pueda convertir implícitamente a
varchar. De lo contrario, utilice CAST para convertir character_expression explícitamente.

Tipos de valor devueltos

varchar o bien nvarchar

Notas

Los niveles de compatibilidad pueden afectar a los valores devueltos. Para obtener más información, vea
sp_dbcmptlevel (Transact-SQL).

Ejemplos

En el ejemplo siguiente se muestra cómo utilizar RTRIM para quitar los espacios finales de una variable de
caracteres.

Copiar código

DDECLARE @string_to_trim varchar(60);


SET @string_to_trim= 'Four spaces are after the period in this sentence.
';
SELECT @string_to_trim + ' Next string.';
SELECT RTRIM(@string_to_trim) + ' Next string.';
GO

SOUNDEX (Transact-SQL)
Devuelve un código de cuatro caracteres (SOUNDEX) para evaluar la semejanza de dos cadenas.

Convenciones de sintaxis de Transact-SQL

Sintaxis

SOUNDEX ( character_expression )
Argumentos

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

Tipos de valor devueltos

varchar

Notas

SOUNDEX convierte una cadena alfanumérica en un código de cuatro caracteres para buscar palabras o
nombres que suenen de forma similar. El primer carácter del código coincide con el primer carácter de
character_expression y los caracteres segundo al cuarto son números. Las vocales de character_expression
no se tienen en cuenta, a menos que sean la primera letra de la cadena.Las funciones de cadena se pueden
anidar.

Ejemplos

El ejemplo siguiente muestra la función SOUNDEX y la función relacionada DIFFERENCE. En el primer


ejemplo se obtienen los valores estándar de SOUNDEX para todas las consonantes. Al utilizar SOUNDEX
para las cadenas Smith y Smythe, se obtiene el mismo resultado, ya que todas las vocales, la letra y, las
letras dobles y la letra h no se incluyen.
Copiar código

-- Using SOUNDEX
SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe');

SPACE (Transact-SQL)
Devuelve una cadena de espacios repetidos.

Convenciones de sintaxis de Transact-SQL

Sintaxis

SPACE ( integer_expression )
Argumentos

integer_expression
Es un entero positivo que indica el número de espacios. Si integer_expression es negativo, se
devuelve una cadena de tipo NULL.

Para obtener más información, vea Expresiones (Transact-SQL).

Tipos de valor devueltos

char

Notas

Para incluir espacios en datos Unicode o para devolver más de 8.000 espacios de caracteres, utilice
REPLICATE en lugar de SPACE.

Ejemplos

En el ejemplo siguiente se eliminan los apellidos y se concatena una coma, dos espacios y los nombres de
las personas que aparecen en la tabla Contact de AdventureWorks.
Copiar código

USE AdventureWorks;
GO
SELECT RTRIM(LastName) + ',' + SPACE(2) + LTRIM(FirstName)
FROM Person.Contact
ORDER BY LastName, FirstName;
GO

STR (Transact-SQL)
Devuelve datos de caracteres convertidos a partir de datos numéricos.

Convenciones de sintaxis de Transact-SQL

Sintaxis

STR ( float_expression [ , length [ , decimal ] ] )


Argumentos

float_expression
Es una expresión de tipo de datos numéricos aproximados (float) con separador decimal.

length
Es la longitud total. Ésta incluye el separador decimal, el signo, los dígitos y los espacios. El valor
predeterminado es 10.

decimal
Es el número de cifras a la derecha del separador decimal. El valor de decimal debe ser menor o
igual que 16. Si decimal es mayor que 16, el resultado se trunca en el decimosexto lugar a la
derecha del separador decimal.

Tipos de valor devueltos

char

Notas

Si se especifican, los valores de los parámetros length y decimal de STR deben ser positivos. De manera
predeterminada, o si el parámetro decimal es 0, el número se redondea a un entero. El valor de length
especificado debe ser mayor o igual que la longitud de la parte del número anterior al separador decimal,
más el signo (si corresponde). Una float_expression corta se justifica a la derecha según al longitud
especificada, y una float_expression larga se trunca según el número de decimales especificados. Por
ejemplo, STR(12,10) da como resultado 12, justificado a la derecha en el conjunto de resultados. Sin
embargo, STR(1223,2) trunca el conjunto de resultados a **. Las funciones de cadena se pueden anidar.

Nota:

Para convertir a datos Unicode, utilice STR en una función de conversión CONVERT o CAST.

Ejemplos

En el ejemplo siguiente se convierte una expresión formada por un máximo de cinco dígitos y un separador
decimal en una cadena de caracteres de seis posiciones. La parte fraccionaria del número se redondea a un
lugar decimal.

Copiar código

SELECT STR(123.45, 6, 1);


GO

STUFF (Transact-SQL)
La función STUFF inserta una cadena en otra. Elimina una longitud determinada de caracteres de la primera
cadena a partir de la posición de inicio y, a continuación, inserta la segunda cadena en la primera, en la
posición de inicio.

Convenciones de sintaxis de Transact-SQL

Sintaxis

STUFF ( character_expression , start , length ,character_expression )


Argumentos

character_expression
Es una expresión de datos de caracteres. character_expression puede ser una constante, una
variable o una columna de datos binarios o de caracteres.

start
Es un valor entero que especifica la ubicación donde comienzan la eliminación y la inserción. Si
start o length son negativos, se devuelve una cadena de tipo NULL. Si start es mayor que el primer
parámetro character_expression, se devuelve una cadena de tipo NULL. start puede ser de tipo
bigint.

length
Es un entero que especifica el número de caracteres que se elimina. Si length es mayor que el
primer parámetro character_expression, se produce una eliminación hasta el último carácter del
último parámetro character_expression. length puede ser de tipo bigint.

Tipos de valor devueltos

Devuelve datos de caracteres si character_expression es de alguno de los tipos de datos de caracteres


admitidos. Devuelve datos binarios si character_expression es de alguno de los tipos de datos binarios
admitidos.

Notas

Si la posición de inicio o la longitud es negativa, o si la posición de inicio es mayor que la longitud de la


primera cadena, se devuelve una cadena NULL. Si la longitud que se va a eliminar es mayor que la primera
cadena, se elimina hasta el primer carácter de la primera cadena.

Si el valor resultante es mayor que el máximo admitido por el tipo devuelto, se genera un error.

Ejemplos

En el ejemplo siguiente se devuelve una cadena de caracteres creada al eliminar tres caracteres de la
primera cadena, abcdef, a partir de la posición 2 de b e insertar la segunda cadena en el punto de
eliminación.

Copiar código

SELECT STUFF('abcdef', 2, 3, 'ijklmn');


GO

SUBSTRING (Transact-SQL)
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 SQL Server que se pueden usar con esta función, vea Tipos de datos
(Transact-SQL).

Convenciones de sintaxis de Transact-SQL

Sintaxis

SUBSTRING ( value_expression ,start_expression , length_expression )


Argumentos

value_expression
Es una expresión de tipo character, binary, text, ntext o image.

start_expression
Es un entero o una expresión bigint que especifica dónde comienzan los caracteres devueltos. Si
start_expression es menor que 1, la expresión devuelta comenzará en el primer carácter
especificado en value_expression. En este caso, el número de caracteres que se devuelve es el
valor de la suma de start_expression y length_expression o 0, el que sea mayor. Si
start_expression es mayor que el número de caracteres de la expresión de valor, se devuelve una
expresión de longitud cero.

length_expression
Es un entero positivo o una expresión bigint que especifica cuántos caracteres de value_expression
se van a devolver. Si length_expression es negativo, se genera un error y finaliza la instrucción. Si
la suma de start_expression y length_expression es mayor que el número de caracteres de
value_expression, se devuelve la expresión de valor completa que empieza en start_expression.

Notas

Los valores para start_expression y length_expression se deben especificar en número de caracteres para los
tipos de datos ntext, charo varchar y en bytes para los tipos de datos text, image, binaryo varbinary.

value_expression debe ser varchar(max) o varbinary(max) cuando start_expression o length_expression


contiene un valor superior a 2147483647.

Nota:

Los niveles de compatibilidad pueden afectar a los valores devueltos. Para obtener más
información acerca de los niveles de compatibilidad, vea sp_dbcmptlevel (Transact-SQL).

Tipos de valor devuelto

Devuelve datos de caracteres si expression es de alguno de los tipos de datos de caracteres admitidos.
Devuelve datos binarios si expression es de alguno de los tipos de datos binary admitidos. La cadena
devuelta es del mismo tipo que la expresión indicada, con las excepciones mostradas en la tabla:

Expresión especificada Valor devuelto

char/varchar/text varchar

nchar/nvarchar/ntext nvarchar

binary/varbinary/image varbinary

Ejemplos

A. Utilizar SUBSTRING con una cadena de caracteres


En el siguiente ejemplo se muestra cómo devolver únicamente una parte de una cadena de caracteres. En la
tabla Contact, esta consulta devuelve el apellido en una columna y solamente la primera inicial en la
segunda columna.

Copiar código

USE AdventureWorks;
GO
SELECT LastName, SUBSTRING(FirstName, 1, 1) AS Initial
FROM Person.Contact
WHERE LastName like 'Barl%'
ORDER BY LastName;

UNICODE (Transact-SQL)
Devuelve el valor entero, según la definición del estándar Unicode, para el primer carácter de la expresión de
entrada.

Convenciones de sintaxis de Transact-SQL

Sintaxis

UNICODE ( 'ncharacter_expression' )
Argumentos

' ncharacter_expression '


Es una expresión de tipo nchar o nvarchar.

Tipos de valor devueltos

int

Ejemplos

A. Utilizar las funciones UNICODE y NCHAR


En el ejemplo siguiente se utilizan las funciones UNICODE y NCHAR para imprimir el valor UNICODE del
primer carácter de la cadena Åkergatan de 24 caracteres y para imprimir el verdadero primer carácter
(Å).

Copiar código

DECLARE @nstring nchar(12)


SET @nstring = N'Åkergatan 24'
SELECT UNICODE(@nstring), NCHAR(UNICODE(@nstring))
Éste es el conjunto de resultados.

Copiar código

----------- -
197 Å
B. Utilizar SUBSTRING, UNICODE y CONVERT
En el ejemplo siguiente se utilizan las funciones SUBSTRING, UNICODE y CONVERT para imprimir el
número de carácter, el carácter Unicode y el valor UNICODE de cada uno de los caracteres de la cadena
Åkergatan 24.
Copiar código

-- The @position variable holds the position of the character currently


-- being processed. The @nstring variable is the Unicode character
-- string to process.
DECLARE @position int, @nstring nchar(12)
-- Initialize the current position variable to the first character in
-- the string.
SET @position = 1
-- Initialize the character string variable to the string to process.
-- Notice that there is an N before the start of the string, which
-- indicates that the data following the N is Unicode data.
SET @nstring = N'Åkergatan 24'
-- Print the character number of the position of the string you are at,
-- the actual Unicode character you are processing, and the UNICODE
-- value for this particular character.
PRINT 'Character #' + ' ' + 'Unicode Character' + ' ' + 'UNICODE Value'
WHILE @position <= DATALENGTH(@nstring)
-- While these are still characters in the character string,
BEGIN
SELECT @position,
CONVERT(char(17), SUBSTRING(@nstring, @position, 1)),
UNICODE(SUBSTRING(@nstring, @position, 1))
SELECT @position = @position + 1
END

UPPER (Transact-SQL)
Devuelve una expresión de caracteres con datos de caracteres en minúsculas convertidos a mayúsculas.

Convenciones de sintaxis de Transact-SQL

Sintaxis

UPPER ( character_expression )
Argumentos

character_expression
Es una expresión de datos de caracteres. character_expression puede ser una constante, una
variable o una columna de datos binarios o de caracteres.

character_expression debe ser de un tipo de datos que se pueda convertir implícitamente a


varchar. De lo contrario, utilice CAST para convertir character_expression explícitamente.

Tipos de valor devueltos

varchar o bien nvarchar

Ejemplos

En el ejemplo siguiente se utilizan las funciones UPPER y RTRIM para devolver el apellido de las personas
de la tabla Contact de manera que aparezca en mayúsculas, recortado y concatenado al nombre.
Copiar código

USE AdventureWorks;
GO
SELECT UPPER(RTRIM(LastName)) + ', ' + FirstName AS Name
FROM Person.Contact
ORDER BY LastName;
GO
Funciones matemáticas (Transact-SQL)
Las siguientes funciones escalares realizan un cálculo, normalmente basado en valores de entrada
proporcionados como argumentos, y devuelven un valor numérico:

ABS DEGREES RAND

ACOS EXP ROUND

ASIN FLOOR SIGN

ATAN LOG SIN

ATN2 LOG10 SQRT

CEILING PI SQUARE

COS POWER TAN

COT RADIANS

Nota:

Las funciones aritméticas, como ABS, CEILING, DEGREES, FLOOR, POWER, RADIANS y SIGN,
devuelven un valor del mismo tipo de datos que el valor de entrada. Las funciones
trigonométricas y otras funciones, incluidas EXP, LOG, LOG10, SQUARE y SQRT, convierten sus
valores de entrada a float y devuelven un valor de tipo float.

Todas las funciones matemáticas, excepto RAND, son deterministas, lo que significa que devuelven el mismo
resultado cada vez que se llaman con un conjunto específico de valores de entrada. RAND es determinista
sólo cuando se especifica un parámetro de inicialización. Para obtener más información acerca del
determinismo de funciones, vea Funciones deterministas y no deterministas.

ABS (Transact-SQL)
Función matemática que devuelve el valor absoluto positivo de una expresión numérica específica.

Convenciones de sintaxis de Transact-SQL

Sintaxis

ABS ( numeric_expression )
Argumentos

numeric_expression
Es una expresión de la categoría de tipo de datos numérico exacto o numérico aproximado, excepto
para el tipo de datos bit.

Tipos de valor devueltos

Devuelve el mismo tipo que numeric_expression.

Ejemplos

En el siguiente ejemplo se muestra el resultado de utilizar la función ABS en tres números distintos.
Copiar código

SELECT ABS(-1.0), ABS(0.0), ABS(1.0)

ACOS (Transact-SQL)
Función matemática que devuelve el ángulo, en radianes, cuyo coseno es la expresión float especificada;
también se denomina arco coseno.

Convenciones de sintaxis de Transact-SQL

Sintaxis

ACOS ( float_expression )
Argumentos

float_expression
Es una expresión de tipo float o de un tipo que puede convertirse en float implícitamente, con un
valor entre -1 y 1. Los valores situados fuera de este intervalo devuelven NULL y generan un error
de dominio.

Tipos de valor devueltos

float

Ejemplos

En el ejemplo siguiente se devuelve el valor ACOS del número especificado.

Copiar código

SET NOCOUNT OFF;


DECLARE @cos float;
SET @cos = -1.0;
SELECT 'The ACOS of the number is: ' + CONVERT(varchar, ACOS(@cos));

ASIN (Transact-SQL)
Devuelve el ángulo, expresado en radianes, cuyo seno es la expresión float especificada. También se
denomina arco seno.

Convenciones de sintaxis de Transact-SQL

Sintaxis

ASIN ( float_expression )
Argumentos

float_expression
Es una expresión de tipo float o un tipo que puede convertirse de forma implícita a float, con un
valor de -1 a 1. Los valores situados fuera de este intervalo devuelven NULL y generan un error de
dominio.

Tipos de valor devueltos

float

Ejemplos

En el siguiente ejemplo se toma una expresión float y se devuelve el valor de ASIN del ángulo especificado.

Copiar código

/* The first value will be -1.01. This fails because the value is
outside the range.*/
DECLARE @angle float
SET @angle = -1.01
SELECT 'The ASIN of the angle is: ' + CONVERT(varchar, ASIN(@angle))
GO

-- The next value is -1.00.


DECLARE @angle float
SET @angle = -1.00
SELECT 'The ASIN of the angle is: ' + CONVERT(varchar, ASIN(@angle))
GO

-- The next value is 0.1472738.


DECLARE @angle float
SET @angle = 0.1472738
SELECT 'The ASIN of the angle is: ' + CONVERT(varchar, ASIN(@angle))
GO

ATAN (Transact-SQL)
Devuelve el ángulo en radianes cuya tangente es una expresión de tipo float especificada. También se
denomina arcotangente.

Convenciones de sintaxis de Transact-SQL

Sintaxis

ATAN ( float_expression )
Argumentos

float_expression
Es una expresión de tipo float o de un tipo que se puede convertir a float de manera implícita.

Tipos de valor devueltos

float

Ejemplos

En el siguiente ejemplo se toma una expresión float y se devuelve el valor de ATAN del ángulo especificado.

Copiar código

SELECT 'The ATAN of -45.01 is: ' + CONVERT(varchar, ATAN(-45.01))


SELECT 'The ATAN of -181.01 is: ' + CONVERT(varchar, ATAN(-181.01))
SELECT 'The ATAN of 0 is: ' + CONVERT(varchar, ATAN(0))
SELECT 'The ATAN of 0.1472738 is: ' + CONVERT(varchar, ATAN(0.1472738))
SELECT 'The ATAN of 197.1099392 is: ' + CONVERT(varchar,
ATAN(197.1099392))
GO
ATN2 (Transact-SQL)
Devuelve el ángulo (en radianes) formado por el eje X positivo y la línea que se extiende desde el origen al
punto (y, x), donde x e y son los valores de las dos expresiones de punto flotante especificadas.

Convenciones de sintaxis de Transact-SQL

Sintaxis

ATN2 ( float_expression , float_expression )


Argumentos

float_expression
Es una expresión del tipo de datos float.

Tipos de valor devueltos

float

Ejemplos

En el siguiente ejemplo se calcula el ATN2 de los componentes x e y especificados.


Copiar código

DECLARE @x float
DECLARE @y float
SET @x = 35.175643
SET @y = 129.44
SELECT 'The ATN2 of the angle is: ' + CONVERT(varchar,ATN2(@x,@y ))
GO

CEILING (Transact-SQL)
Devuelve el entero más pequeño mayor o igual que la expresión numérica especificada.

Convenciones de sintaxis de Transact-SQL

Sintaxis

CEILING ( numeric_expression )
Argumentos

numeric_expression
Es una expresión de la categoría de tipo de datos numérico exacto o numérico aproximado, excepto
para el tipo de datos bit.

Tipos de valor devueltos

Devuelve el mismo tipo que numeric_expression.

Ejemplos

El siguiente ejemplo muestra valores numéricos positivos, negativos y cero con la función CEILING.

Copiar código

SELECT CEILING($123.45), CEILING($-123.45), CEILING($0.0)


GO

COS (Transact-SQL)
Es una función matemática que devuelve el coseno trigonométrico del ángulo especificado, expresado en
radianes, en la expresión dada.

Convenciones de sintaxis de Transact-SQL

Sintaxis

COS ( float_expression )
Argumentos

float_expression
Es una expresión de tipo float.

Tipos de valor devueltos

float

Ejemplos

El ejemplo siguiente devuelve el valor COS del ángulo específico.

Copiar código

DECLARE @angle float


SET @angle = 14.78
SELECT 'The COS of the angle is: ' + CONVERT(varchar,COS(@angle))
GO

COT (Transact-SQL)
Una función matemática que devuelve la cotangente trigonométrica del ángulo especificado, expresada en
radianes, en la expresión float especificada.

Convenciones de sintaxis de Transact-SQL

Sintaxis

COT ( float_expression )
Argumentos

float_expression
Es una expresión de tipo float o de un tipo que se puede convertir a float de manera implícita.

Tipos de valor devueltos

float

Ejemplos

El ejemplo siguiente devuelve el valor COT del ángulo específico.

Copiar código

DECLARE @angle float


SET @angle = 124.1332
SELECT 'The COT of the angle is: ' + CONVERT(varchar,COT(@angle))
GO

DEGREES (Transact-SQL)
Devuelve el ángulo correspondiente en grados para un ángulo especificado en radianes.

Convenciones de sintaxis de Transact-SQL

Sintaxis

DEGREES ( numeric_expression )
Argumentos

numeric_expression
Es una expresión de la categoría de tipo de datos numérico exacto o numérico aproximado, excepto
para el tipo de datos bit.
Valores de código de retorno

Devuelve el mismo tipo que numeric_expression.

Ejemplos

En el ejemplo siguiente se devuelve el número de grados en un ángulo de PI/2 radianes.

Copiar código

SELECT 'The number of degrees in PI/2 radians is: ' +


CONVERT(varchar, DEGREES((PI()/2)));
GO

EXP (Transact-SQL)
Devuelve el valor exponencial de la expresión float especificada.

Convenciones de sintaxis de Transact-SQL

Sintaxis

EXP ( float_expression )
Argumentos

float_expression
Es una expresión de tipo float o de un tipo que se puede convertir a float de manera implícita.

Tipos de valor devueltos

float

Notas

La constante e (2,718281…) es la base de los logaritmos naturales.

El exponente de un número es la constante e elevada a la potencia del número. Por ejemplo, EXP(1,0) =
e^1,0 = 2,71828182845905 y EXP(10) = e^10 = 22026,4657948067.

El valor exponencial del logaritmo natural de un número es el propio número: EXP (LOG (n)) = n. Asimismo,
el logaritmo natural del valor exponencial de un número es el propio número: LOG (EXP (n)) = n.

Ejemplos
A. Obtener el exponente de un número
En el ejemplo siguiente se declara una variable y se devuelve el valor exponencial de la variable especificada
(10) con una descripción de texto.

Copiar código

DECLARE @var float


SET @var = 10
SELECT 'The EXP of the variable is: ' + CONVERT(varchar,EXP(@var))
GO

FLOOR (Transact-SQL)
Devuelve el entero más grande que sea menor o igual que la expresión numérica especificada.

Convenciones de sintaxis de Transact-SQL

Sintaxis

FLOOR ( numeric_expression )
Argumentos

numeric_expression
Es una expresión de la categoría de tipo de datos numérico exacto o numérico aproximado, excepto
para el tipo de datos bit.

Tipos de valor devueltos

Devuelve el mismo tipo que numeric_expression.

Ejemplos

En el ejemplo siguiente se muestran valores numéricos positivos, negativos y de moneda con la función
FLOOR.
Copiar código

SELECT FLOOR(123.45), FLOOR(-123.45), FLOOR($123.45)

LOG (Transact-SQL)
Devuelve el logaritmo natural de la expresión float especificada.

Convenciones de sintaxis de Transact-SQL

Sintaxis

LOG ( float_expression )
Argumentos

float_expression
Es una expresión de tipo float o de un tipo que se puede convertir a float de manera implícita.

Tipos de valor devueltos

float

Notas
La constante e (2.71828182845905…) es la base de los logaritmos naturales.

La base de los logaritmos naturales es la constante e (2.71828182845905…). LOG ( e ) = 1.0.

El logaritmo natual del valor exponencial de un número es el propio número: LOG (EXP( n ) ) = n. Asimismo,
el valor exponencial del logaritmo natural de un número es el propio número: EXP (LOG( n ) ) = n.

Ejemplos

A. Calcular el logaritmo de un número.


En el ejemplo siguiente se calcula el LOG de la expresión float especificada.
Copiar código

DECLARE @var float;


SET @var = 10;
SELECT 'The LOG of the variable is: ' + CONVERT(varchar, LOG(@var));
GO
Éste es el conjunto de resultados.

Copiar código

-------------------------------------
The LOG of the variable is: 2.30259

(1 row(s) affected)
B. Calcular el logaritmo del exponente de un número.
En el ejemplo siguiente se calcula el LOG del exponente de un número.
Copiar código

SELECT LOG (EXP (10));

LOG10 (Transact-SQL)
Devuelve el logaritmo en base 10 de la expresión float especificada.

Convenciones de sintaxis de Transact-SQL

Sintaxis

LOG10 ( float_expression )
Argumentos

float_expression
Es una expresión de tipo float o de un tipo que se puede convertir de forma implícita a float.

Tipos de valor devueltos

float

Notas

Las funciones LOG10 y POWER están relacionadas inversamente entre sí. Por ejemplo, 10 ^ LOG10(n) = n.

Ejemplos

A. Calcular el logaritmo en base 10 para una variable


En el siguiente ejemplo se calcula el LOG10 de la variable especificada.
Copiar código

DECLARE @var float;


SET @var = 145.175643;
SELECT 'The LOG10 of the variable is: ' + CONVERT(varchar,LOG10(@var));
GO

PI (Transact-SQL)
Devuelve el valor constante de PI.

Convenciones de sintaxis de Transact-SQL

Sintaxis

PI ( )
Tipos de valor devueltos

float

Ejemplos

El siguiente ejemplo devuelve el valor de PI.


Copiar código

SELECT PI()
GO

POWER (Transact-SQL)
Devuelve el valor de la expresión especificada elevada a la potencia indicada.

Convenciones de sintaxis de Transact-SQL

Sintaxis

POWER ( float_expression , y )
Argumentos

float_expression
Es una expresión de tipo float o de un tipo que se puede convertir a float de manera implícita.

y
Es la potencia a la que se eleva float_expression. y puede ser una expresión de la categoría de tipos
de datos numérico exacto o numérico aproximado, excepto el tipo de datos bit.

Tipos de valor devueltos

Equivalente a float_expression.

Ejemplos

A. Usar POWER para mostrar resultados de 0,0


Este ejemplo muestra un desbordamiento inferior de coma flotante que da como resultado 0.0.
Copiar código
SELECT POWER(2.0, -100.0);
GO

RADIANS (Transact-SQL)
Devuelve los radianes de una expresión numérica en grados.

Convenciones de sintaxis de Transact-SQL

Sintaxis

RADIANS ( numeric_expression )
Argumentos

numeric_expression
Es una expresión de la categoría de tipo de datos numérico exacto o numérico aproximado, excepto
para el tipo de datos bit.
Tipos de valor devueltos

Devuelve el mismo tipo que numeric_expression.

Ejemplos

A. Utilizar RADIANS para mostrar 0.0


En este ejemplo se devuelve el resultado 0.0 debido a que la expresión numérica que se va a convertir en
radianes es demasiado pequeña para la función RADIANS.
Copiar código

SELECT RADIANS(1e-307)
GO

RAND (Transact-SQL)
Devuelve un valor float pseudoaleatorio de 0 a 1. ambos excluidos.

Convenciones de sintaxis de Transact-SQL

Sintaxis

RAND ( [ seed ] )
Argumentos

seed
Es una expresión de tipo entero (tinyint, smallint o int) que proporciona el valor de inicialización.
Si no se especifica seed, SQL Server Database Engine (Motor de base de datos de SQL Server)
asigna un valor de inicialización de forma aleatoria. Para un valor de inicialización especificado, el
resultado devuelto es siempre el mismo.

Tipos de valor devueltos

float

Notas

Las llamadas repetitivas de RAND() con el mismo valor de inicialización devuelven los mismo resultados.
Para una conexión, si se llama a RAND() con el valor de inicialización especificado, todas las llamadas
posteriores de RAND() generan resultados basados en la llamada a RAND() inicializada. Por ejemplo, la
siguiente consulta siempre devuelve la misma secuencia de números.

Copiar código

SELECT RAND(100), RAND(), RAND()


Ejemplos

En el siguiente ejemplo se producen cuatro números aleatorios diferentes, generados con la función RAND.

Copiar código

DECLARE @counter smallint;


SET @counter = 1;
WHILE @counter < 5
BEGIN
SELECT RAND() Random_Number
SET @counter = @counter + 1
END;
GO

ROUND (Transact-SQL)
Devuelve un valor numérico, redondeado a la longitud o precisión especificadas.

Convenciones de sintaxis de Transact-SQL

Sintaxis

ROUND ( numeric_expression , length [ ,function ] )


Argumentos

numeric_expression
Es una expresión de la categoría de tipo de datos numérico exacto o numérico aproximado, excepto
el tipo de datos bit.
length
Es la precisión con la que se redondea numeric_expression. length debe ser una expresión de tipo
tinyint, smallint o int. Si length es un número positivo, numeric_expression se redondea al
número de posiciones decimales que especifica length. Si length es un número negativo,
numeric_expression se redondea a la izquierda del separador decimal, según se especifica en
length.

function
Es el tipo de operación que se realiza. function debe ser de tipo tinyint, smallint o int. Si function
se omite o tiene el valor 0 (predeterminado), numeric_expression se redondea. Si se especifica un
valor distinto de 0, numeric_expression se trunca.

Tipos de valor devueltos

Devuelve el mismo tipo que numeric_expression.

Notas
ROUND siempre devuelve un valor. Si length es un valor negativo y mayor que el número de dígitos
anteriores al separador decimal, ROUND devuelve 0.

Ejemplo Resultado

ROUND(748.58, -4) 0

ROUND devuelve un valor de numeric_expression redondeado, independientemente del tipo de datos,


cuando length es un número negativo.

Ejemplos Resultado

ROUND(748.58, -1) 750.00

ROUND(748.58, -2) 700.00

ROUND(748.58, -3) 1000.00

Ejemplos

A. Usar ROUND y valores estimados


En el ejemplo siguiente se muestran dos expresiones que demuestran que, con la función ROUND, el último
dígito siempre es un valor estimado.

Copiar código

SELECT ROUND(123.9994, 3), ROUND(123.9995, 3)


GO

SIGN (Transact-SQL)
Devuelve el signo positivo (+1), cero (0) o negativo (-1) de la expresión especificada.

Convenciones de sintaxis de Transact-SQL

Sintaxis

SIGN ( numeric_expression )
Argumentos

numeric_expression
Es una expresión de la categoría de tipo de datos numérico exacto o aproximado, excepto para el
tipo de datos bit.

Tipos de valor devueltos

Expresión especificada Tipo devuelto

bigint bigint

int/smallint/tinyint int

money/smallmoney money

numeric/decimal numeric/decimal

Otros tipos float

Ejemplos

En el ejemplo siguiente se devuelven los valores de SIGN para los números de -1 a 1.


Copiar código

DECLARE @value real


SET @value = -1
WHILE @value < 2
BEGIN
SELECT SIGN(@value)
SET NOCOUNT ON
SELECT @value = @value + 1
SET NOCOUNT OFF
END
SET NOCOUNT OFF
GO

SIN (Transact-SQL)
Devuelve el seno trigonométrico del ángulo dado, en radianes, en una expresión float numérica aproximada.

Convenciones de sintaxis de Transact-SQL

Sintaxis

SIN ( float_expression )
Argumentos

float_expression
Es una expresión de tipo float o de un tipo que se puede convertir en float de forma implícita.

Tipos de valor devueltos

float

Ejemplos

En el ejemplo siguiente se calcula el seno de un ángulo especificado.

Copiar código

DECLARE @angle float


SET @angle = 45.175643
SELECT 'The SIN of the angle is: ' + CONVERT(varchar,SIN(@angle))
GO

SQRT (Transact-SQL)
Devuelve la raíz cuadrada del valor de tipo flotante especificado.

Convenciones de sintaxis de Transact-SQL

Sintaxis

SQRT ( float_expression )
Argumentos
float_expression
Es una expresión de tipo float o de un tipo que puede convertirse implícitamente a float.

Tipos de valor devueltos

float

Ejemplos

En el ejemplo siguiente se devuelve la raíz cuadrada de los números comprendidos entre 1.00 y 10.00.
Copiar código

DECLARE @myvalue float;


SET @myvalue = 1.00;
WHILE @myvalue < 10.00
BEGIN
SELECT SQRT(@myvalue);
SET @myvalue = @myvalue + 1
END;
GO

SQUARE (Transact-SQL)
Devuelve el cuadrado del valor de tipo flotante especificado.

Convenciones de sintaxis de Transact-SQL

Sintaxis

SQUARE ( float_expression )
Argumentos

float_expression
Es una expresión de tipo float o de un tipo que puede convertirse implícitamente a float.

Tipos de valor devueltos

float
Ejemplos

En el ejemplo siguiente se devuelve el volumen de un cilindro de 1 pulgada de radio y 5 pulgadas de alto.


Copiar código

DECLARE @h float, @r float


SET @h = 5
SET @r = 1
SELECT PI()* SQUARE(@r)* @h AS 'Cyl Vol'

TAN (Transact-SQL)
Devuelve la tangente de la expresión de entrada.

Convenciones de sintaxis de Transact-SQL


Sintaxis

TAN ( float_expression )
Argumentos

float_expression
Es una expresión de tipo float o de un tipo que puede convertirse implícitamente a float,
interpretado como un número de radianes.

Tipos de valor devueltos

float

Ejemplos

En el siguiente ejemplo se devuelve la tangente de PI()/2.


Copiar código

SELECT TAN(PI()/2);
Funciones de fecha y hora

En las tablas siguientes se enumeran las funciones de fecha y hora de Transact-SQL. Para obtener más
información acerca del determinismo, vea Funciones deterministas y no deterministas.

Funciones que obtienen valores de fecha y hora del sistema


Todos los valores de fecha y hora del sistema se derivan del sistema operativo del equipo en el que se
ejecuta la instancia de SQL Server.

Funciones de fecha y hora del sistema de precisión elevada


SQL Server 2008 obtiene los valores de fecha y hora utilizando la API de Windows
GetSystemTimeAsFileTime(). La exactitud depende del hardware del equipo y de la versión de Windows
en las que la instancia de SQL Server se esté ejecutando. La precisión de esta API se fija en 100
nanosegundos. La precisión se puede determinar mediante la API de Windows
GetSystemTimeAdjustment().

Tipo de datos Determinism


Función Sintaxis Valor devuelto devuelto o

SYSDATETIME SYSDATETIME () Devuelve un valor datetime2(7) No


datetime2(7) determinista
que contiene la
fecha y hora del
equipo en el que
la instancia de
SQL Server se
está ejecutando.
El ajuste de zona
horaria no está
incluido.

SYSDATETIMEOFFS SYSDATETIMEOFFS Devuelve un valor datetimeoffset( No


ET ET ( ) datetimeoffset( 7) determinista
7) que contiene
la fecha y hora
del equipo en el
que la instancia
de SQL Server se
está ejecutando.
El ajuste de zona
horaria está
incluido.

SYSUTCDATETIME SYSUTCDATETIME ( Devuelve un valor datetime2(7) No


) datetime2(7) determinista
que contiene la
fecha y hora del
equipo en el que
la instancia de
SQL Server se
está ejecutando.
La fecha y hora
se devuelven
como hora
universal
coordinada
(UTC).

Funciones de fecha y hora del sistema de precisión baja

Tipo de
datos
Función Sintaxis Valor devuelto devuelto Determinismo

CURRENT_TIMESTAMP CURRENT_TIMESTAMP Devuelve un valor datetime No


datetime2(7) que determinista
contiene la fecha y
hora del equipo en
el que la instancia
de SQL Server se
está ejecutando. El
ajuste de zona
horaria no está
incluido.

GETDATE GETDATE ( ) Devuelve un valor datetime No


datetime2(7) que determinista
contiene la fecha y
hora del equipo en
el que la instancia
de SQL Server se
está ejecutando. El
ajuste de zona
horaria no está
incluido.

GETUTCDATE GETUTCDATE ( ) Devuelve un valor datetime No


datetime2(7) que determinista
contiene la fecha y
hora del equipo en
el que la instancia
de SQL Server se
está ejecutando.
La fecha y hora se
devuelven como
una hora universal
coordinada (UTC).

Funciones que obtienen partes de la fecha y hora

Tipo de
datos
Función Sintaxis Valor devuelto devuelto Determinismo

DATENAME DATENAME ( Devuelve una cadena de nvarchar No determinista


datepart , caracteres que representa el
date ) datepart especificado de la fecha
especificada.

DATEPART DATEPART ( Devuelve un entero que int No determinista


datepart , representa el datepart
date ) especificado del date
especificado.

DAY DAY ( date ) Devuelve un entero que int Determinista


representa la parte del día de
date especificado.

MONTH MONTH ( date ) Devuelve un entero que int Determinista


representa la parte del mes de un
date especificado.

YEAR YEAR ( date ) Devuelve un entero que int Determinista


representa la parte del año de un
date especificado.

Funciones que obtienen diferencias de fecha y hora

Tipo de
datos
Función Sintaxis Valor devuelto devuelto Determinismo

DATEDIFF DATEDIFF ( Devuelve el número de límites int Determinista


datepart , datepart de fecha y hora entre
startdate , dos fechas especificadas.
enddate )

Funciones que modifican valores de fecha y hora

Tipo de datos Determinism


Función Sintaxis Valor devuelto devuelto o

DATEADD DATEADD Devuelve un nuevo El tipo de datos Determinista


(datepart , number valor datetime del argumento
, date ) agregando un date.
intervalo al
datepart
especificado del
dateespecificado.

SWITCHOFFSET SWITCHOFFSET SWITCH OFFSET datetimeoffset Determinista


(DATETIMEOFFSET cambia el ajuste con la precisión
, time_zone) de zona horaria de fraccionaria de
un valor DATETIMEOFFSE
DATETIMEOFFSET T
y conserva el valor
UTC.

TODATETIMEOFFSE TODATETIMEOFFS TODATETIMEOFFS datetimeoffset Determinista


T ET (expression , ET transforma un con la precisión
time_zone) valor datetime2 en fraccionaria del
un valor argumento
datetimeoffset. El datetime
valor datetime2 se
interpreta en la
hora local para el
valor time_zone
especificado.

Funciones que establecen u obtienen un formato de sesión

Tipo de
datos
Función Sintaxis Valor devuelto devuelto Determinismo

@@DATEFIRST @@DATEFIRST Devuelve el valor actual, tinyint No


para la sesión, de SET determinista
DATEFIRST.

SET DATEFIRST SET DATEFIRST Establece el primer día de No No aplicable


{ number | la semana en un número aplicable
@number_var } del 1 al 7.

SET SET DATEFORMAT { Determina el orden de los No No aplicable


DATEFORMAT format | componentes de la fecha aplicable
@format_var } (mes/día/año) para escribir
datos de tipo datetime o
smalldatetime.

@@LANGUAGE @@LANGUAGE Devuelve el nombre del No No aplicable


idioma que se está aplicable
utilizando actualmente.
@@LANGUAGE no es
ninguna función de fecha u
hora. Sin embargo, la
configuración de idioma
puede afectar a la salida de
las funciones de fecha.

SET LANGUAGE SET LANGUAGE Establece el entorno del No No aplicable


{ [ N ] 'language' | idioma de la sesión y los aplicable
@language_var } mensajes del sistema. SET
LANGUAGE no es ninguna
función de fecha u hora.
Sin embargo, la
configuración de idioma
afecta a la salida de las
funciones de fecha.

sp_helplanguage sp_helplanguage Devuelve información No No aplicable


[ [ @language = ] sobre los formatos de aplicable
'language' ] fecha de todos los idiomas
compatibles.
sp_helplanguage no es
un procedimiento
almacenado de fecha u
hora. Sin embargo, la
configuración de idioma
afecta a la salida de las
funciones de fecha.

Funciones que validan valores de fecha y hora

Tipo de
datos
Función Sintaxis Valor devuelto devuelto Determinismo

ISDATE ISDATE ( Determina si una int ISDATE sólo es determinista si


expression expresión de entrada se utiliza con la función
) datetime o CONVERT, cuando se especifica
smalldatetime es un el parámetro de estilo CONVERT
valor de fecha u hora y cuando el estilo no es igual a
válido. 0, 100, 9 ni 109.

Funciones de conversión
Use las funciones de conversión CAST y CONVERT para convertir expresiones de un tipo de datos a otro,
cuando SQL Server no realice automáticamente las conversiones de tipos de datos. Por ejemplo, si se
compara una expresión char con una expresión datetime o una expresión smallint con una expresión int,
o expresiones char de distintas longitudes, SQL Server las convierte automáticamente. Esto se denomina
conversión implícita. No es necesario utilizar CAST ni CONVERT para estas conversiones implícitas. Sin
embargo, se puede utilizar CAST y CONVERT en los escenarios de conversión siguientes:

• Cuando dos expresiones tienen exactamente el mismo tipo de datos.


• Cuando dos expresiones se pueden convertir de forma implícita.
• Cuando es necesario convertir de forma explícita los tipos de datos.
Si intenta realizar una conversión que no es posible (por ejemplo, convertir una expresión char que incluya
letras a int), SQL Server muestra un mensaje de error.

También se pueden utilizar las funciones CAST y CONVERT para obtener diversos formatos de datos
especiales, así como en la lista de selección, en la cláusula WHERE y en cualquier parte en donde se permita
una expresión.

Si desea que el código de programa de Transact-SQL cumpla el estándar SQL-92, utilice CAST en lugar de
CONVERT. Utilice CONVERT en lugar de CAST para aprovechar la funcionalidad de CONVERT.

Cuando se utiliza CAST o CONVERT, se necesita la siguiente información:

• La expresión que se va a convertir; por ejemplo, un informe de ventas necesitaría que los datos de
ventas se convirtieran de datos de moneda a datos de caracteres.

• El tipo de datos al que se va a convertir la expresión especificada; por ejemplo, varchar o cualquier

otro tipo de datos del sistema de SQL Server.


A menos que guarde el valor convertido, una conversión sólo será válida mientras dure la función CAST o
CONVERT.

Si no especifica ninguna longitud cuando se convierte al tipo de datos, SQL Server suministra
automáticamente la longitud 30.

Ejemplos
En los ejemplos siguientes se utiliza CAST en la primera instrucción SELECT y CONVERT en la segunda
instrucción SELECT para convertir la columna Title a una columna nvarchar(20) y reducir así la
longitud de los títulos.

Copiar código

USE AdventureWorks;
GO
SELECT CAST(Title AS nvarchar(20)) AS Title, Revision
FROM Production.Document
WHERE Revision < 2
GO
O bien

Copiar código

USE AdventureWorks;
GO
SELECT CONVERT(nvarchar(20), Title) AS Title, Revision
FROM Production.Document
WHERE Revision < 2
GO
Éste es el conjunto de resultados (de cualquiera de las consultas).

Copiar código

Title Revision
-------------------- --------
Crank Arm and Tire M 0
Front Reflector Brac 1
Installing Replaceme 0
Repair and Service G 0
Training Wheels 2 1

(5 row(s) affected)
En el ejemplo siguiente, la columna HireDate, una columna datetime, se convierte en una columna
char(11).
Copiar código

USE AdventureWorks
GO
SELECT c.FirstName, c.LastName, CAST(e.HireDate AS char(11)) AS HireDate
FROM HumanResources.Employee e
JOIN Person.Contact c ON e.EmployeeID = c.ContactID
WHERE c.FirstName = 'Kim'
GO

INFOGRAFIA

1. Funciones de cadena SQL http://msdn.microsoft.com/es-


es/library/ms181984.aspx
2. Funciones Matemáticas SQL http://msdn.microsoft.com/es-
es/library/ms181984.aspx
3. Funciones de fecha y hora http://technet.microsoft.com/es-
es/library/ms175509.aspx
4. Funciones de conversión de datos http://technet.microsoft.com/es-
es/library/ms175509.aspx

Anda mungkin juga menyukai