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:
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.
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.
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.
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.
Tabulación char(9)
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
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.
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.
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.
Ejemplos
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
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
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
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.
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.
Sintaxis
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).
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
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.
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.
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.
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.
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.
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.
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
NCHAR (Transact-SQL)
Devuelve el carácter Unicode correspondiente al código entero dado, tal como se define en el estándar
Unicode.
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.
nchar(1)
Ejemplos
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
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.
Sintaxis
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.
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
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.
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.
Sintaxis
'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.
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.
Sintaxis
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.
Devuelve nvarchar si uno de los argumentos de entrada tiene el tipo de datos nvarchar; de lo contrario,
REPLACE devuelve varchar.
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
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
REPLICATE (Transact-SQL)
Repite un valor de cadena un número especificado de veces.
Sintaxis
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:
integer_expression
Es una expresión de cualquier tipo entero, incluido bigint. Si integer_expression es negativo, se
devuelve NULL.
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.
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.
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.
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).
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.
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.
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
SOUNDEX (Transact-SQL)
Devuelve un código de cuatro caracteres (SOUNDEX) para evaluar la semejanza de dos cadenas.
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.
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
-- Using SOUNDEX
SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe');
SPACE (Transact-SQL)
Devuelve una cadena de espacios repetidos.
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.
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.
Sintaxis
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.
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
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.
Sintaxis
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.
Notas
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
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).
Sintaxis
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.
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).
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:
char/varchar/text varchar
nchar/nvarchar/ntext nvarchar
binary/varbinary/image varbinary
Ejemplos
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.
Sintaxis
UNICODE ( 'ncharacter_expression' )
Argumentos
int
Ejemplos
Copiar código
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
UPPER (Transact-SQL)
Devuelve una expresión de caracteres con datos de caracteres en minúsculas convertidos a mayúsculas.
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.
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:
CEILING PI SQUARE
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.
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.
Ejemplos
En el siguiente ejemplo se muestra el resultado de utilizar la función ABS en tres números distintos.
Copiar código
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.
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.
float
Ejemplos
Copiar código
ASIN (Transact-SQL)
Devuelve el ángulo, expresado en radianes, cuyo seno es la expresión float especificada. También se
denomina arco seno.
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.
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
ATAN (Transact-SQL)
Devuelve el ángulo en radianes cuya tangente es una expresión de tipo float especificada. También se
denomina arcotangente.
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.
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
Sintaxis
float_expression
Es una expresión del tipo de datos float.
float
Ejemplos
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.
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.
Ejemplos
El siguiente ejemplo muestra valores numéricos positivos, negativos y cero con la función CEILING.
Copiar código
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.
Sintaxis
COS ( float_expression )
Argumentos
float_expression
Es una expresión de tipo float.
float
Ejemplos
Copiar código
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.
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.
float
Ejemplos
Copiar código
DEGREES (Transact-SQL)
Devuelve el ángulo correspondiente en grados para un ángulo especificado en radianes.
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
Ejemplos
Copiar código
EXP (Transact-SQL)
Devuelve el valor exponencial de la expresión float especificada.
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.
float
Notas
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
FLOOR (Transact-SQL)
Devuelve el entero más grande que sea menor o igual que la expresión numérica especificada.
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.
Ejemplos
En el ejemplo siguiente se muestran valores numéricos positivos, negativos y de moneda con la función
FLOOR.
Copiar código
LOG (Transact-SQL)
Devuelve el logaritmo natural de la expresión float especificada.
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.
float
Notas
La constante e (2.71828182845905…) es la base de los logaritmos naturales.
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
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
LOG10 (Transact-SQL)
Devuelve el logaritmo en base 10 de la expresión float especificada.
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.
float
Notas
Las funciones LOG10 y POWER están relacionadas inversamente entre sí. Por ejemplo, 10 ^ LOG10(n) = n.
Ejemplos
PI (Transact-SQL)
Devuelve el valor constante de PI.
Sintaxis
PI ( )
Tipos de valor devueltos
float
Ejemplos
SELECT PI()
GO
POWER (Transact-SQL)
Devuelve el valor de la expresión especificada elevada a la potencia indicada.
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.
Equivalente a float_expression.
Ejemplos
RADIANS (Transact-SQL)
Devuelve los radianes de una expresión numérica en grados.
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
Ejemplos
SELECT RADIANS(1e-307)
GO
RAND (Transact-SQL)
Devuelve un valor float pseudoaleatorio de 0 a 1. ambos excluidos.
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.
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
En el siguiente ejemplo se producen cuatro números aleatorios diferentes, generados con la función RAND.
Copiar código
ROUND (Transact-SQL)
Devuelve un valor numérico, redondeado a la longitud o precisión especificadas.
Sintaxis
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.
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
Ejemplos Resultado
Ejemplos
Copiar código
SIGN (Transact-SQL)
Devuelve el signo positivo (+1), cero (0) o negativo (-1) de la expresión especificada.
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.
bigint bigint
int/smallint/tinyint int
money/smallmoney money
numeric/decimal numeric/decimal
Ejemplos
SIN (Transact-SQL)
Devuelve el seno trigonométrico del ángulo dado, en radianes, en una expresión float numérica aproximada.
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.
float
Ejemplos
Copiar código
SQRT (Transact-SQL)
Devuelve la raíz cuadrada del valor de tipo flotante especificado.
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.
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
SQUARE (Transact-SQL)
Devuelve el cuadrado del valor de tipo flotante especificado.
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.
float
Ejemplos
TAN (Transact-SQL)
Devuelve la tangente de la expresión de entrada.
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.
float
Ejemplos
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.
Tipo de
datos
Función Sintaxis Valor devuelto devuelto Determinismo
Tipo de
datos
Función Sintaxis Valor devuelto devuelto Determinismo
Tipo de
datos
Función Sintaxis Valor devuelto devuelto Determinismo
Tipo de
datos
Función Sintaxis Valor devuelto devuelto Determinismo
Tipo de
datos
Función Sintaxis Valor devuelto devuelto Determinismo
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:
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.
• 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
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