funciones de cadena, as fecha y hora y conversion de datos
TRANSCRIPT
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 ein Test' 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().
Función Sintaxis Valor devuelto Tipo de datos devuelto
Determinismo
SYSDATETIME SYSDATETIME () Devuelve un valor datetime2(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 no está incluido.
datetime2(7) No determinista
SYSDATETIMEOFFSET
SYSDATETIMEOFFSET ( )
Devuelve un valor datetimeoffset(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.
datetimeoffset(7)
No determinista
SYSUTCDATETIME SYSUTCDATETIME ( )
Devuelve un valor datetime2(7) 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).
datetime2(7) No determinista
Funciones de fecha y hora del sistema de precisión baja
Función Sintaxis Valor devuelto
Tipo de datos devuelto Determinismo
CURRENT_TIMESTAMP CURRENT_TIMESTAMP Devuelve un valor datetime2(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 no está incluido.
datetime No determinista
GETDATE GETDATE ( ) Devuelve un valor datetime2(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 no está incluido.
datetime No determinista
GETUTCDATE GETUTCDATE ( ) Devuelve un valor datetime2(7) 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 una hora universal coordinada (UTC).
datetime No determinista
Funciones que obtienen partes de la fecha y hora
Función Sintaxis Valor devuelto
Tipo de datos devuelto Determinismo
DATENAME DATENAME ( datepart , date )
Devuelve una cadena de caracteres que representa el datepart especificado de la fecha especificada.
nvarchar No determinista
DATEPART DATEPART ( datepart , date )
Devuelve un entero que representa el datepart especificado del date especificado.
int No determinista
DAY DAY ( date ) Devuelve un entero que representa la parte del día de date especificado.
int Determinista
MONTH MONTH ( date ) Devuelve un entero que representa la parte del mes de un date especificado.
int Determinista
YEAR YEAR ( date ) Devuelve un entero que representa la parte del año de un date especificado.
int Determinista
Funciones que obtienen diferencias de fecha y hora
Función Sintaxis Valor devuelto
Tipo de datos devuelto Determinismo
DATEDIFF DATEDIFF ( datepart , startdate , enddate )
Devuelve el número de límites datepart de fecha y hora entre dos fechas especificadas.
int Determinista
Funciones que modifican valores de fecha y hora
Función Sintaxis Valor devuelto Tipo de datos devuelto
Determinismo
DATEADD DATEADD (datepart , number , date )
Devuelve un nuevo valor datetime agregando un intervalo al datepart especificado del dateespecificado.
El tipo de datos del argumento date.
Determinista
SWITCHOFFSET SWITCHOFFSET (DATETIMEOFFSET , time_zone)
SWITCH OFFSET cambia el ajuste de zona horaria de un valor DATETIMEOFFSET y conserva el valor UTC.
datetimeoffset con la precisión fraccionaria de DATETIMEOFFSET
Determinista
TODATETIMEOFFSET
TODATETIMEOFFSET (expression , time_zone)
TODATETIMEOFFSET transforma un valor datetime2 en un valor datetimeoffset. El valor datetime2 se interpreta en la hora local para el valor time_zone
datetimeoffset con la precisión fraccionaria del argumento datetime
Determinista
especificado.
Funciones que establecen u obtienen un formato de sesión
Función Sintaxis Valor devuelto
Tipo de datos devuelto Determinismo
@@DATEFIRST @@DATEFIRST Devuelve el valor actual, para la sesión, de SET DATEFIRST.
tinyint No determinista
SET DATEFIRST SET DATEFIRST { number | @number_var }
Establece el primer día de la semana en un número del 1 al 7.
No aplicable
No aplicable
SET DATEFORMAT
SET DATEFORMAT { format | @format_var }
Determina el orden de los componentes de la fecha (mes/día/año) para escribir datos de tipo datetime o smalldatetime.
No aplicable
No aplicable
@@LANGUAGE @@LANGUAGE Devuelve el nombre del idioma que se está 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.
No aplicable
No aplicable
SET LANGUAGE SET LANGUAGE { [ N ] 'language' | @language_var }
Establece el entorno del idioma de la sesión y los 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.
No aplicable
No aplicable
sp_helplanguage sp_helplanguage [ [ @language = ] 'language' ]
Devuelve información sobre los formatos de 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.
No aplicable
No aplicable
Funciones que validan valores de fecha y hora
Función Sintaxis Valor devuelto
Tipo de datos devuelto Determinismo
ISDATE ISDATE ( expression )
Determina si una expresión de entrada datetime o smalldatetime es un valor de fecha u hora válido.
int ISDATE sólo es determinista si se utiliza con la función CONVERT, cuando se especifica el parámetro de estilo CONVERT y cuando el estilo no es igual a 0, 100, 9 ni 109.
Funciones de conversiónUse 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.aspx3. Funciones de fecha y hora http://technet.microsoft.com/es-es/library/ms175509.aspx4. Funciones de conversión de datos
http://technet.microsoft.com/es-es/library/ms175509.aspx