Está en la página 1de 33

Universidad Nacional de Cajamarca Base de Datos II

FUNCIONES DE SISTEMA EN SQL SERVER

I. Introduccin
Al igual que las funciones de los lenguajes de programacin, las funciones
definidas por el usuario de SQL Server son rutinas que aceptan parmetros,
realizan una accin, como un clculo complejo, y devuelven el resultado de esa
accin como un valor. El valor devuelto puede ser un valor escalar nico o un
conjunto de resultados.
Las ventajas de utilizar las funciones definidas por el usuario en SQL Server son:
Permiten una programacin modular.
Puede crear la funcin una vez, almacenarla en la base de datos y llamarla
desde el programa tantas veces como desee. Las funciones definidas por
el usuario se pueden modificar, independientemente del cdigo de origen
del programa.
Permiten una ejecucin ms rpida.
Al igual que los procedimientos almacenados, las funciones definidas por
el usuario Transact-SQL reducen el costo de compilacin del cdigo
Transact-SQL almacenando los planes en la cach y reutilizndolos para
ejecuciones repetidas. Esto significa que no es necesario volver a analizar
y optimizar la funcin definida por el usuario con cada uso, lo que permite
obtener tiempos de ejecucin mucho ms rpidos.
Las funciones CLR ofrecen una ventaja de rendimiento importante sobre
las funciones Transact-SQL para tareas de clculo, manipulacin de
cadenas y lgica empresarial. Transact-SQL se adecuan mejor a la lgica
intensiva del acceso a datos.
Pueden reducir el trfico de red.
Una operacin que filtra datos basndose en restricciones complejas que
no se puede expresar en una sola expresin escalar se puede expresar como
una funcin. La funcin se puede invocar en la clusula WHERE para
reducir el nmero de filas que se envan al cliente.

II. Tipos de Funciones


2.1. Funciones de conversin
CAST Y CONVERT
Convierte una expresin de un tipo de datos en otro.
Syntax CAST:
CAST ( expression AS data_type [ ( length ) ] )

Syntax CONVERT:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
Expression
Se trata de cualquier expresin.
data_type

1
Universidad Nacional de Cajamarca Base de Datos II

Es el tipo de datos de destino. Esto incluye xml, bigint, y sql_variant. No se


pueden utilizar tipos de datos de alias.
Length
Es un nmero entero opcional que especifica la longitud del tipo de datos de
destino. El valor predeterminado es 30.
style
Expresin entera que especifica cmo la funcin CONVERT convertir expresin.
Si style es NULL, se devuelve NULL. Determina el intervalo por data_type.

---CAST

select p.ProductName, o.UnitPrice as Original, CAST (o.UnitPrice as


INT) as INT ,
CAST (o.UnitPrice as decimal(9,6)) as Decimal
from [Order Details] o INNER JOIN Products p
on o.ProductID=p.ProductID
GROUP BY p.ProductName, o.UnitPrice

-- CONVERT
select p.ProductName, o.UnitPrice as Original, CONVERT
(int,o.UnitPrice) as INT ,
CONVERT (decimal(9,6),o.UnitPrice ) as Decimal
from [Order Details] o INNER JOIN Products p
on o.ProductID=p.ProductID
GROUP BY p.ProductName, o.UnitPrice

PARSE
Devuelve el resultado de una expresin, traducido al tipo de datos solicitado
en SQL Server.
Sintaxis:
PARSE ( string_value AS data_type [ USING culture ] )
valor_cadena
nvarchar(4000) valor que representa el valor con formato para analizar en el
tipo de datos especificado.
valor_cadena debe ser una representacin vlida del tipo de datos solicitado
o PARSE produce un error.
data_type
Valor literal que representa el tipo de datos solicitado para el resultado.
Referencia cultural
Cadena opcional que identifica la referencia cultural en la que valor.cadena
tiene el formato.
Si la referencia cultural no se proporciona un argumento, a continuacin, se
utiliza el idioma de la sesin actual. Este idioma se establece implcitamente,
o explcitamente mediante la instruccin SET LANGUAGE. Referencia cultural
acepta cualquier referencia cultural compatible con .NET Framework; no se
limita a los idiomas admitidos explcitamente por SQL Server. Si la referencia
cultural argumento no es vlido, PARSE produce un error.

2
Universidad Nacional de Cajamarca Base de Datos II

--PARSE
select T.TerritoryID AS ORIGINAL,PARSE (T.TerritoryID AS
decimal(10,4) USING 'es-ES') AS DECIMAL
from Territories T
GROUP BY T.TerritoryID

TRY_CAST o CAST
Devuelve una conversin de valor al tipo de datos especificado si la conversin
se realiza correctamente; de lo contrario, devuelve NULL.

Sintaxis
CAST ( expression AS data_type [ ( length ) ] )

expression
Valor que se puede convertir. Cualquier expresin vlida.
data_type
Tipo de datos al que se va a convertir expresin.
length
Nmero entero opcional que especifica la longitud del tipo de datos de destino.
El intervalo de valores aceptables est determinado por el valor de data_type.

TRY_CAST toma el valor pasado a l e intenta convertir a la especificada


data_type. Si la conversin se realiza correctamente, TRY_CAST devuelve el
valor especificado data_type; si se produce un error, se devuelve null. Sin
embargo, si se solicita una conversin que no est explcitamente permitida, a
continuacin, TRY_CAST produce un error.

--CAST
SELECT O.CustomerID,O.OrderDate ORIGINAL, CAST(o.OrderDate AS
varchar ) AS MODIFICADO
FROM Orders o
GROUP BY O.CustomerID,O.OrderDate

data_type [(longitud)]
Tipo de datos al que se va a convertir expresin.
expression
Valor que se puede convertir.
estilo
Expresin de entero opcional que especifica cmo la TRY_CONVERT funcin
consiste en traducir expresin.
estilo acepta los mismos valores que la estilo parmetro de la convertir funcin.
Para obtener ms informacin, vea CAST y CONVERT (Transact-SQL).
El intervalo de valores aceptables est determinado por el valor de data_type. Si
estilo es null, entonces TRY_CONVERT devuelve null.

3
Universidad Nacional de Cajamarca Base de Datos II

TRY_CONVERT toma el valor pasado a l e intenta convertir a la especificada


data_type. Si la conversin se realiza correctamente, TRY_CONVERT devuelve
el valor especificado data_type; si se produce un error, se devuelve null. Sin
embargo, si se solicita una conversin que no est explcitamente permitida, a
continuacin, TRY_CONVERT produce un error.

-- TRY_CONVERT
--CONVERSION INCORRECTA VALORES NULL
SELECT O.CustomerID,O.OrderDate ORIGINAL,
TRY_CONVERT(INT,o.CustomerID ) AS MODIFICADO
FROM Orders o
GROUP BY O.CustomerID,O.OrderDate

--CONVERSION CORRECTA
SELECT O.CustomerID,O.OrderDate ORIGINAL,
TRY_CONVERT(varchar,o.OrderDate ) AS MODIFICADO
FROM Orders o
GROUP BY O.CustomerID,O.OrderDate

TRY_PARSE
Devuelve el resultado de una expresin, traducido al tipo de datos solicitado, o
NULL si se produce un error en la conversin en SQL Server. Use TRY_PARSE
solo para convertir de tipos de cadena a tipos de fecha y hora y de nmero.
Sintaxis

TRY_PARSE ( string_value AS data_type [ USING culture ] )

string_value
nvarchar (4000) valor que representa el valor con formato para analizar en el tipo de
datos especificado.
string_value debe ser una representacin vlida del tipo de datos solicitado o
TRY_PARSE devuelve null.
data_type
Literal que representa el tipo de datos solicitado para el resultado.
referencia cultural
Cadena opcional que identifica la referencia cultural en la que valor_cadena tiene el
formato.
Si la referencia cultural no se proporciona un argumento, se utiliza el idioma de la
sesin actual. Este idioma se establece de forma implcita o explcitamente mediante
la instruccin SET LANGUAGE. referencia cultural acepta cualquier referencia cultural
compatible con .NET Framework; no se limita a los idiomas admitidos explcitamente
por SQL Server. Si la referencia cultural argumento no es vlido, PARSE produce un
error.

Use TRY_PARSE solo para convertir de tipos de cadena a tipos de fecha y hora y de
nmero. Para las conversiones de tipos generales, siga usando CAST o CONVERT.
Tenga en cuenta que hay cierta sobrecarga de rendimiento al analizar el valor de
cadena.

4
Universidad Nacional de Cajamarca Base de Datos II

TRY_PARSE se basa en la presencia de Common Language Runtime (CLR) de .NET


Framework.
Esta funcin no se enviar de forma remota puesto que depende de la presencia del
CLR. El envo remoto de una funcin que necesita el CLR producira un error en el
servidor remoto.

--TRY_PARSE
select T.TerritoryID AS ORIGINAL,TRY_PARSE (T.TerritoryID AS
decimal(10,4) USING 'es-ES') AS DECIMAL
from Territories T
GROUP BY T.TerritoryID

2.2. Funciones de Hora y Fecha


Funciones que obtienen valores de fecha y hora de sistema

SYSDATETIME
Devuelve un datetime2(7) valor que contiene la fecha y hora del equipo
en el que la instancia de SQL Server est ejecutando. El ajuste de zona
horaria no est incluido.
SELECT SYSDATETIME()

SYSDATETIMEOFFSET
Devuelve un datetimeoffset(7) valor que contiene la fecha y hora del
equipo en el que la instancia de SQL Server est ejecutando. El ajuste de
zona horaria est incluido.
SELECT SYSDATETIMEOFFSET()

SYSUTCDATETIME
Devuelve un datetime2(7) valor que contiene la fecha y hora del equipo
en el que la instancia de SQL Server est ejecutando. La fecha y hora se
devuelven como hora UTC (hora Universal).
SELECT SYSUTCDATETIME()

Funciones de fecha y hora del sistema de precisin baja

CURRENT_TIMESTAMP
Devuelve un datetime valor que contiene la fecha y hora del equipo en el
que la instancia de SQL Server est ejecutando. El ajuste de zona horaria
no est incluido.

SELECT CURRENT_TIMESTAMP

5
Universidad Nacional de Cajamarca Base de Datos II

GETDATE
Devuelve un datetime valor que contiene la fecha y hora del equipo en el
que la instancia de SQL Server est ejecutando. El ajuste de zona horaria
no est incluido.

SELECT GETDATE()

GETUTCDATE
Devuelve un datetime valor que contiene la fecha y hora del equipo en el
que la instancia de SQL Server est ejecutando. La fecha y hora se
devuelven como hora UTC (hora Universal).
SELECT GETUTCDATE()

Funciones que obtienen partes de fecha y hora


DATENAME
Devuelve una cadena de caracteres que representa el parmetro
datepart de la fecha especificada.

SELECT DATENAME(year, O.OrderDate) AO


,DATENAME(month, O.OrderDate) MES
,DATENAME(day, O.OrderDate) DIA
FROM Orders O
GROUP BY O.OrderDate

DATEPART
Devuelve un entero que representa el parmetro datepart del elemento
especificado fecha.
SELECT DATEPART(year,O.RequiredDate) AO
,DATEPART(month, O.RequiredDate) MES
,DATEPART(day, O.RequiredDate) DIA
,DATEPART(dayofyear, O.RequiredDate)
,DATEPART(weekday, O.RequiredDate)
FROM Orders O
ORDER BY O.RequiredDate

DAY
Devuelve un entero que representa la parte del da del elemento
especificado fecha.

SELECT DISTINCT DAY (O.OrderDate) DIA


FROM Orders O
GROUP BY O.OrderDate

MONTH
Devuelve un entero que representa la parte del mes de una determinada
fecha.

6
Universidad Nacional de Cajamarca Base de Datos II

SELECT DISTINCT MONTH (O.OrderDate) MES


FROM Orders O
GROUP BY O.OrderDate

YEAR
Devuelve un entero que representa la parte del ao de una fecha.

SELECT DISTINCT YEAR (O.RequiredDate) AO


FROM Orders O
GROUP BY O.RequiredDate

Funciones que obtienen valores de fecha y hora de sus partes

DATEFROMPARTS
Devuelve una fecha valor para el ao, mes y da.
SINTAXIS
DATEFROMPARTS ( year, month, day )

SELECT O.CustomerID, O.OrderDate


FROM Orders O
WHERE O.OrderDate=DATEFROMPARTS ( 1996, 08, 27 )
GROUP BY O.CustomerID, O.OrderDate

DATETIME2FROMPARTS
Devuelve un datetime2 valor para la fecha y hora especificadas y con la
precisin especificada.
SINTAXIS

DATETIME2FROMPARTS ( year, month, day, hour, minute, seconds,


fractions, precision )
SELECT O.CustomerID, O.ShippedDate
FROM Orders O
WHERE O.ShippedDate=DATETIME2FROMPARTS ( 1996, 09, 11, 00,
00, 00, 00, 000 )
GROUP BY O.CustomerID, O.ShippedDate

DATETIMEFROMPARTS
Devuelve un datetime valor para la fecha y hora especificadas.
SINTAXIS
DATETIMEFROMPARTS ( year, month, day, hour, minute, seconds,
milliseconds )

SELECT O.CustomerID, O.RequiredDate


FROM Orders O
WHERE O.RequiredDate=DATETIMEFROMPARTS ( 1996, 09, 11, 00,
00, 00,00)

7
Universidad Nacional de Cajamarca Base de Datos II

GROUP BY O.CustomerID, O.RequiredDate

DATETIMEOFFSETFROMPARTS
Devuelve un datetimeoffset valor para la fecha y hora especificadas y
con los desplazamientos especificados y la precisin.
SINTAXIS
DATETIMEOFFSETFROMPARTS ( year, month, day, hour, minute,
seconds, fractions, hour_offset, minute_offset, precision )

ao
Expresin entera que especifica un ao.
mes
Expresin entera que especifica un mes.
da
Expresin entera que especifica un da.
hora
Expresin entera que especifica horas.
minuto
Expresin entera que especifica minutos.
segundos
Expresin entera que especifica segundos.
fracciones
Expresin entera que especifica fracciones.
hour_offset
Expresin entera que especifica la parte de hora del ajuste de zona
horaria.
minute_offset
Expresin entera que especifica la parte de minutos del ajuste de zona
horaria.
precisin
Literal entero que especifica la precisin de la datetimeoffset valor va a
devolver.
SELECT DATETIMEOFFSETFROMPARTS ( 2010, 12, 31, 14, 23, 23,
0, 12, 0, 7 ) RESULTADO

SELECT DATETIMEOFFSETFROMPARTS ( 2011, 8, 15, 14, 30, 00,


5, 12, 30, 1 ) RESULTADO

Cuando fracciones tiene un valor de 5 y precisin tiene un valor de 1, a


continuacin, el valor de fracciones representa 5/10 de un segundo.

8
Universidad Nacional de Cajamarca Base de Datos II

SMALLDATETIMEFROMPARTS
Devuelve un smalldatetime valor para la fecha y hora especificadas.
SINTAXIS
SMALLDATETIMEFROMPARTS ( year, month, day, hour, minute )

SELECT O.CustomerID, O.RequiredDate


FROM Orders O
WHERE O.RequiredDate=SMALLDATETIMEFROMPARTS ( 1996, 09,
11, 00, 00 )
GROUP BY O.CustomerID, O.RequiredDate

TIMEFROMPARTS
Devuelve un tiempo valor durante el tiempo especificado y con la precisin
especificada.
SINTAXIS
TIMEFROMPARTS ( hour, minute, seconds, fractions, precision )
SELECT TIMEFROMPARTS ( 23, 59, 59, 0, 0 ) RESULTADO

SELECT TIMEFROMPARTS ( 14, 23, 44, 5, 1 ) RESULTADO

Cuando fracciones tiene un valor de 5 y precisin tiene un valor de 1, a


continuacin, el valor de fracciones representa 5/10 de un segundo.

Funciones que obtienen la diferencia de fecha y hora


DATEDIFF
Devuelve el nmero de fecha u hora datepart los lmites que se cruzan entre
dos fechas especificadas.
DATEDIFF se puede usar en la lista de seleccin y en las clusulas
WHERE, HAVING, GROUP BY y ORDER BY.
DATEDIFF convierte implcitamente los literales de cadena como un
datetime2 tipo. Esto significa que DATEDIFF no admite el formato ao-
da-mes cuando se pasa la fecha como cadena. Se debe convertir
explcitamente la cadena a un datetime o smalldatetime tipo que se usa
el formato de ADM.
La especificacin de SET DATEFIRST no tiene efecto en DATEDIFF.
DATEDIFF siempre utiliza Domingo como el primer da de la semana para
garantizar que la funcin es determinstica.
SELECT O.OrderDate,O.RequiredDate,DATEDIFF(DAY,O.OrderDate
,O.RequiredDate ) RESULTADO
FROM Orders O
GROUP BY O.OrderDate,O.RequiredDate

9
Universidad Nacional de Cajamarca Base de Datos II

Funciones que modifican los valores de fecha y hora


DATEADD
Devuelve un nuevo datetime valor agregando un intervalo a especificado
datepart del elemento especificado fecha.
SINTAXIS
DATEADD (datepart , number , date )
SELECT
O.CUSTOMERID,O.ORDERDATE,DATEADD(YEAR,7,O.ORDERDATE)
FROM Orders O

EOMONTH
Devuelve el ltimo da del mes que contiene la fecha especificada, con un
desplazamiento opcional.
SINTAXIS
EOMONTH ( start_date [, month_to_add ] )
start_date
Expresin de fecha que especifica la fecha para la que se devuelve el
ltimo da del mes.
month_to_add
Expresin entera opcional que especifica el nmero de meses que desee
agregar a start_date.
Si se especifica este argumento, a continuacin, EOMONTH suma el
nmero especificado de meses a start_datey, a continuacin, devuelve el
ltimo da del mes de la fecha resultante. Si esto desborda el intervalo
vlido de fechas, se producir un error.

SELECT O.ORDERDATE, EOMONTH(O.ORDERDATE) AS [MES ACTUAL],


EOMONTH(O.ORDERDATE,1) [MES
SIGUIENTE],EOMONTH(O.ORDERDATE,-1) AS [MES ANTERIOR]
FROM Orders O
GROUP BY O.ORDERDATE

SWITCHOFFSET
CONMUTADOR desplazamiento cambia el ajuste de zona horaria de un valor
DATETIMEOFFSET y conserva el valor de hora UTC.
SINTAXIS
SWITCHOFFSET ( DATETIMEOFFSET, time_zone )

DATETIMEOFFSET
Es una expresin que se pueda resolver como un DateTimeOffset (n)
valor.

10
Universidad Nacional de Cajamarca Base de Datos II

time_zone
Es una cadena de caracteres en formato [+|-]TZH:TZM o un entero con
signo (de minutos) que representa el ajuste de zona horaria y se supone
que reconoce y est ajustado para el horario de verano.

SELECT O.OrderDate, SWITCHOFFSET (O.OrderDate,'-04:00')


CAMBIO
FROM Orders O
GROUP BY O.OrderDate

TODATETIMEOFFSET
TODATETIMEOFFSET transforma un valor datetime2 en un valor
datetimeoffset. El valor datetime2 se interpreta en la hora local para el valor
time_zone especificado.
SINTAXIS
TODATETIMEOFFSET ( expression , time_zone )
SELECT O.OrderDate, TODATETIMEOFFSET (O.OrderDate,-120) AS CAMBIO
FROM Orders O
GROUP BY O.OrderDate

Funciones que obtienen o establecen sesiones de formato


@@DATEFIRST
Devuelve el valor actual, para la sesin, de SET DATEFIRST.
DATEFIRST especifica el primer da de la semana. El valor
predeterminado para ingls ingls de EE.UU. es 7, domingo.

SELECT @@DATEFIRST

SET DATEFIRST
Establece el primer da de la semana en un nmero del 1 al 7.
SET DATEFIRST 6
SELECT @@DATEFIRST DIA

SET DATEFORMAT
Establece el orden de la fecha (mes/da/ao) para escribir datetime o
smalldatetime datos.
SET DATEFORMAT dmy
DECLARE @datevar datetime2 = '31/12/2008 09:01:01.1234567'
SELECT @datevar RESULTADO

11
Universidad Nacional de Cajamarca Base de Datos II

@@LANGUAGE
Devuelve el nombre del idioma que se est utilizando actualmente.
@@LANGUAGE no es una funcin de fecha u hora. Sin embargo, la
configuracin de idioma puede afectar a la salida de las funciones de fecha.
SELECT @@LANGUAGE [IDIOMA USADO]

SET LANGUAGE
Establece el entorno del idioma de la sesin y los mensajes del sistema. SET
LANGUAGE no es ninguna funcin de fecha u hora. Sin embargo, la
configuracin de idioma afecta a la salida de las funciones de fecha.

SET LANGUAGE ENGLISH


SELECT MONTH( O.RequiredDate) AS MES
,DATENAME(MONTH,O.RequiredDate) NOMBRE
FROM Orders O
GROUP BY MONTH( O.RequiredDate),DATENAME(MONTH,O.RequiredDate)

sp_helplanguage
Devuelve informacin sobre los formatos de fecha de todos los idiomas
compatibles. sp_helplanguage no es una fecha u hora procedimiento
almacenado. Sin embargo, la configuracin de idioma afecta a la salida de las
funciones de fecha.
--MUESTRA DATOS SOBRE EL IDIOMA PEDIDO
sp_helplanguage SLOVENSKI
--MUESTRA INFORMACION DE TODOS LOS IDOOMAS
sp_helplanguage

Funciones que validan valores de fecha y hora


ISDATE
Determina si un datetime o smalldatetime expresin de entrada es un valor
de hora o fecha vlida.
SET DATEFORMAT mdy;
SELECT ISDATE('04/15/2008')

SET DATEFORMAT mdy;


SELECT ISDATE('15/04/2008')

SET DATEFORMAT mdy;


SELECT ISDATE('2008/04/15')

2.3. Funciones de Cadena


ASCII
Devuelve el valor del cdigo ASCII del carcter ms a la izquierda de una
expresin de caracteres.

12
Universidad Nacional de Cajamarca Base de Datos II

SELECT E.FirstName,ASCII (E.FirstName) AS [CODIGO PRIMERA


LETRA]
FROM Employees E

CONCAT
Devuelve una cadena que es el resultado de concatenar dos o ms valores de
cadena.
CONCAT toma un nmero variable de argumentos de cadena y los concatena
en una sola cadena. Necesita un mnimo de dos valores de entrada; de lo
contrario, se produce un error. Todos los argumentos se convierten
implcitamente a tipos string y despus se concatenan. Los valores NULL se
convierten implcitamente a una cadena vaca. Si todos los argumentos son
null, una cadena vaca de tipo varchar(1) se devuelve. La conversin implcita
de cadenas sigue las reglas existentes para las conversiones de tipos de datos.
SELECT CONCAT(E.TitleOfCourtesy , E.LastName ,E.FirstName )
AS [*** UNIDO ***]
FROM Employees E

FORMAT
Devuelve un valor con formato con el formato y la referencia cultural opcional.
Use la funcin FORMAT para aplicar formato especfico de la configuracin
regional de los valores de fecha/hora y de nmero como cadenas. Para las
conversiones de tipos de datos generales, use CAST o CONVERT.
SINTAXIS
FORMAT ( value, format [, culture ] )
SELECT P.ProductID,P.ProductName
,FORMAT(P.UnitPrice, 'N', 'en-us') AS 'Formato de
nmero'
,FORMAT(P.UnitPrice, 'G', 'en-us') AS 'Formato
general'
,FORMAT(P.UnitPrice, 'C', 'en-us') AS 'Formato de
moneda'
FROM Products P
GROUP BY P.ProductID,P.ProductName,P.UnitPrice
ORDER BY P.ProductID

LOWER
Devuelve una expresin de caracteres despus de convertir en minsculas los
datos de caracteres en maysculas.
SELECT O.CustomerID ORIGINAL , LOWER( O.CustomerID )
MODIFICADO
FROM Orders O

PATINDEX

13
Universidad Nacional de Cajamarca Base de Datos II

Devuelve la posicin inicial de la primera repeticin de un patrn en la


expresin especificada, o ceros si el patrn no se encuentra, en todos los tipos
de datos de texto y caracteres.
SINTAXIS
PATINDEX ( '%pattern%' , expression )
SELECT P.ProductName,PATINDEX('%CAR%',P.ProductName) UBICACION
FROM Products P
GROUP BY P.ProductName

REPLICATE
Repite un valor de cadena un nmero especificado de veces.
SINTAXIS
REPLICATE ( string_expression ,integer_expression )

string_expression
Es una expresin de un tipo de datos binario o de cadena de caracteres.
string_expression pueden ser caracteres o datos binarios.

integer_expression
Es una expresin de cualquier tipo entero, incluidos los bigint. Si
integer_expression es negativo, se devuelve NULL.

SELECT R.RegionDescription,REPLICATE('0',6)+R.RegionDescription
AS MEZCLA
FROM Region R

RTRIM
Devuelve una cadena de caracteres despus de truncar todos los espacios
finales.
DECLARE @string_to_trim varchar(60);
SET @string_to_trim = 'QUITAR ESPACIOS ';
SELECT @string_to_trim + 'FIN.';
SELECT RTRIM(@string_to_trim) + ' FIN.';
GO

STR
Devuelve datos de caracteres convertidos de datos numricos.
SINTAXIS
STR ( float_expression [ , length [ , decimal ] ] )
float_expression
Es una expresin de numrico aproximado (float) tipo de datos con un separador
decimal.
length

14
Universidad Nacional de Cajamarca Base de Datos II

Es la longitud total. sta incluye el separador decimal, el signo, los dgitos y los
espacios. El valor predeterminado es 10.
decimal
Es el nmero de posiciones a la derecha del separador decimal. decimal debe ser
menor o igual que 16. Si decimal es mayor que 16, a continuacin, el resultado
se trunca a diecisis lugares a la derecha del separador decimal.

SELECT STR(123.45, 6, 1)

En el ejemplo se convierte una expresin formada por un mximo de cinco dgitos


y un separador decimal en una cadena de caracteres de seis posiciones. La parte
fraccionaria del nmero se redondea a un lugar decimal.

UPPER
Devuelve una expresin de caracteres con datos de caracteres en minsculas
convertidos a maysculas.
SELECT C.CompanyName ORIGINAL ,UPPER (C.CompanyName) AS
CONVERTIDO
FROM Customers C

CHAR
Convierte un int cdigo ASCII en un carcter.
SELECT S.SupplierID NUMERO ,CHAR (S.SupplierID) SIMBOLO
FROM Suppliers S

LEFT
Devuelve la parte izquierda de una cadena de caracteres con el nmero de
caracteres especificado.
SELECT P.ProductName, LEFT(P.ProductName, 5) [NOMBRE ACORTADO]
FROM Products P
GROUP BY P.ProductName

LTRIM
Devuelve una expresin de caracteres tras quitar todos los espacios iniciales
en blanco.

SELECT LTRIM(' Five spaces are at the beginning of this


string.')

QUOTENAME
Devuelve una cadena Unicode con los delimitadores agregados para
convertirla en un identificador delimitado vlido de SQL Server.
SELECT QUOTENAME('abc def')

15
Universidad Nacional de Cajamarca Base de Datos II

REVERSE
Devuelve el orden inverso de un valor de cadena.
SELECT C.CategoryName,REVERSE(C.CategoryName) REVEZ
FROM Categories C

SOUNDEX
Devuelve un cdigo de cuatro caracteres (SOUNDEX) para evaluar la
semejanza de dos cadenas.

SELECT SOUNDEX (C.CompanyName) COMPANY,SOUNDEX (C.ContactName)


CONTACT
FROM Customers C
GROUP BY C.CompanyName,C.ContactName

STUFF
La funcin STUFF inserta una cadena en otra. Elimina una longitud
determinada de caracteres de la primera cadena a partir de la posicin de inicio
y, a continuacin, inserta la segunda cadena en la primera, en la posicin de
inicio.
SINTAXIS
STUFF ( character_expression , start , length , replaceWith_expression )
character_expression
Es una expresin de datos de caracteres. character_expression puede ser una
constante, variable o columna de caracteres o datos binarios.
start
Es un valor entero que especifica la ubicacin donde comienzan la eliminacin
y la insercin. Si iniciar o longitud es negativo, se devuelve una cadena nula.
Si iniciar es mayor que el primer character_expression, se devuelve una
cadena nula. iniciar puede ser de tipo bigint.
length
Es un entero que especifica el nmero de caracteres que se elimina. Si longitud
es mayor que el primer character_expression, elimina todo hasta el ltimo
carcter del ltimo character_expression. longitud puede ser de tipo bigint.
replaceWith_expression
Es una expresin de datos de caracteres. character_expression puede ser una
constante, variable o columna de caracteres o datos binarios. Esta expresin
reemplaza longitud caracteres de character_expression empezando por iniciar.
Proporcionar NULL como el replaceWith_expression, quita los caracteres sin
insertar nada.
SELECT E.LastName,E.FirstName,
STUFF(E.LastName,2,3,E.FirstName)
FROM Employees E

16
Universidad Nacional de Cajamarca Base de Datos II

CHARINDEX
Busca otra expresin y devuelve su posicin inicial si se encuentra.

SINTAXIS
CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )
expressionToFind
Es un carcter expresin que contiene la secuencia que se va a encontrar.
expressionToFind est limitado a 8000 caracteres.
expressionToSearch
Expresin de caracteres que se va a buscar.
start_location
Es un entero o bigint expresin a la que comienza la bsqueda. Si start_location
no se especifica, es un nmero negativo o es 0, la bsqueda comienza al principio
de expressionToSearch.
SELECT CHARINDEX('40222',ET.TerritoryID) UBICACION
FROM EmployeeTerritories ET

DECLARE @document varchar(64)


SELECT @document = 'Reflectors are vital safety' +
' components of your bicycle.'
SELECT CHARINDEX('bicycle', @document) UBICACIN

DIFFERENCE
Devuelve un valor entero que indica la diferencia entre los valores de
SOUNDEX de dos expresiones de caracteres.
SELECT SOUNDEX( E.LastName) NOMBRE, SOUNDEX(E.FirstName)
APELLIDO,
DIFFERENCE(E.LastName,E.FirstName) DIFERENCIA
FROM Employees E

LEN
Devuelve el nmero de caracteres de la expresin de cadena especificada,
excluidos los espacios en blanco finales.

SELECT P.ProductName,LEN(P.ProductName) [TOTAL CARACTERES]


FROM Products P
GROUP BY P.ProductName

NCHAR
Devuelve el carcter Unicode correspondiente al cdigo entero dado, tal como
se define en el estndar Unicode.
SELECT P.UnitsInStock,NCHAR (P.UnitsInStock) UNICODES
FROM Products P
GROUP BY P.UnitsInStock

17
Universidad Nacional de Cajamarca Base de Datos II

REPLACE
Reemplaza todas las instancias de un valor de cadena especificado por otro valor
de cadena.
SINTAXIS
REPLACE ( string_expression , string_pattern , string_replacement )

string_expression
Es la cadena expresin que se debe buscar. string_expression pueden ser de un
tipo de datos de carcter o binario.
string_patrn
Es la subcadena que se va a buscar. string_pattern puede ser de un tipo de datos
de carcter o binario. string_pattern no puede ser una cadena vaca (") y no debe
superar el nmero mximo de bytes que cabe en una pgina.
string_reemplazo
Es la cadena de reemplazo. string_replacement puede ser de un tipo de datos de
carcter o binario.

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

RIGHT
Devuelve la parte derecha de una cadena de caracteres con el nmero de
caracteres especificado.
SELECT P.ProductName,RIGHT(P.ProductName,5) NOMBRE
FROM Products P

SPACE
Devuelve una cadena de espacios repetidos.
SELECT E.LastName + SPACE(20) + E.FirstName AS [NOMBRE COMPLETO]
FROM Employees E

SUBSTRING
Devuelve parte de una expresin de caracteres, binaria, de texto o de imagen
en SQL Server.

SELECT O.ShipName,SUBSTRING(O.ShipName,4,6) PARTES


FROM Orders O

UNICODE
Devuelve el valor entero, segn la definicin del estndar Unicode, para el
primer carcter de la expresin de entrada.

18
Universidad Nacional de Cajamarca Base de Datos II

DECLARE @nstring nchar(12);


SET @nstring = N'#%kergatan 24';
SELECT UNICODE(@nstring) NUMERICO, NCHAR(UNICODE(@nstring)
)SIMBOLO

2.4. Funciones Lgicas


Una funcin lgica realiza operaciones o comparaciones lgicas de objetos
y expresiones y devuelve un valor booleano. Las funciones lgicas son
esenciales en las expresiones multidimensionales (MDX) para determinar
la posicin de un miembro.
CHOOSE: Devuelve el elemento en el ndice especificado de una
lista de valores de SQL Server.
Sintaxis: CHOOSE (index, val_1, val_2 [, val_n ] ).

-- Categora y nombre de la categora de los elementos


GO
SELECT CategoryID, CHOOSE
(CategoryID,'Beverages','Condiments','Confections','Dairy
Products','Grains/Cereals','Meat/Poultry','Produce','Seafo
od') AS 'Nombre de Categoria'
FROM Categories

IIF: Devuelve uno de dos valores, dependiendo de si la expresin


booleana se evala como true o como false en SQL Server.
Sintaxis: IIF ( boolean_expression, true_value, false_value ).

-- Evaluacin de la expresin si es verdadero o falso


DECLARE @Cat int = 2, @Categ int = 4
SELECT IIF ( @Cat> @Categ, 'TRUE', 'FALSE' ) AS Resultado

2.5. Funciones de Sistema


Las siguientes funciones del sistema realizan operaciones y devuelven
informacin sobre valores, objetos y configuraciones de SQL Server.
$PARTITION: Devuelve el nmero de particin al que se
asignara un conjunto de valores de columnas de particin para
cualquier funcin de particin especificada en SQL Server 2017.
Sintaxis:
[database_name.]$PARTITION.partition_function_name(express
ion).

@@ERROR: Devuelve el nmero de error de la ltima


instruccin Transact-SQL ejecutada.
Sintaxis: @@ERROR

@@IDENTITY: Se trata de una funcin del sistema que devuelve


el ltimo valor de identidad insertado.
Sintaxis: @@IDENTITY
19
Universidad Nacional de Cajamarca Base de Datos II

--Insertar un nuevo elemento en la tabla shippers

GO
SELECT MAX(ShipperID) FROM Shippers
GO
INSERT INTO Shippers( CompanyName, Phone)
VALUES ('CLARO', 583496)
GO
SELECT @@IDENTITY AS 'Identity'
GO
SELECT MAX(ShipperID) FROM Shippers
GO

@@PACK_RECEIVED: Devuelve el nmero de paquetes de


entrada ledos desde la red por parte de SQL Server desde que se
inici por ltima vez.
Sintaxis: @@PACK_RECEIVED

@@ROWCOUNT: Devuelve el nmero de filas afectadas por la


ltima instruccin. Si el nmero de filas es ms de 2 millones, use
ROWCOUNT_BIG.
Sintaxis: @@ROWCOUNT

@@TRANCOUNT: Devuelve el nmero de instrucciones


BEGIN TRANSACTION que se han producido en la conexin
actual.
Sintaxis: @@TRANCOUNT

BINARY_CHECKSUM: Devuelve el valor binario de suma de


comprobacin calculado en una fila de una tabla o en una lista de
expresiones.
Sintaxis: BINARY_CHECKSUM (* | expression [,...n]).

--Comparacin de dos valores de dos columnas de la tabla


categora.
GO
CREATE TABLE CATEGORIA (CategoryID int, CategoryName
varchar(20))
GO
INSERT INTO CATEGORIA VALUES (5, 'ENLATADOS')
GO
SELECT BINARY_CHECKSUM(*) from CATEGORIA
GO
UPDATE CATEGORIA set CategoryName = 'ENLATADOS'
GO
SELECT BINARY_CHECKSUM(*) from CATEGORIA
GO

SUMA DE COMPROBACION: Devuelve el valor de suma de


comprobacin calculado sobre una fila de una tabla o sobre una
lista de expresiones. CHECKSUM se ha pensado para utilizarlo en
la generacin de ndices hash.

20
Universidad Nacional de Cajamarca Base de Datos II

Sintaxis: CHECKSUM (* | expression [,...n]).

COMPRIMIR: Comprime la expresin de entrada utilizando el


algoritmo GZIP. El resultado de la compresin es la matriz de bytes
del tipo varbinary (max).
Sintaxis: COMPRESS (expression).

CONNECTIONPROPERTY: Devuelve informacin acerca de


las propiedades de conexin de la nica conexin encontrada por
una solicitud.
Sintaxis: CONNECTIONPROPERTY (property).

CONTEXT_INFO: Devuelve el context_info valor que se haya


establecido para la sesin actual o el lote mediante la SET
CONTEXT_INFO instruccin.
Sintaxis: CONTEXT_INFO ().

CURRENT_REQUEST_ID: Devuelve el Id. de la solicitud


actual en la sesin actual.
Sintaxis: CURRENT_REQUEST_ID ().

CURRENT_TRANSACTION_ID: Devuelve el identificador de


transaccin de la transaccin actual en la sesin actual.
Sintaxis: CURRENT_TRANSACTION_ID ( ).

DESCOMPRIMIR: Descomprimir la expresin de entrada


mediante el algoritmo GZIP. Resultado de la compresin es la
matriz de bytes (tipo varbinary (max)).
Sintaxis: DECOMPRESS (expression).

ERROR_LINE: Devuelve el nmero de lnea en que se produjo


un error que provoc la ejecucin del bloque CATCH de una
construccin TRYCATCH.
Sintaxis: ERROR_LINE ( ).

ERROR_MESSAGE: Devuelve el texto del mensaje del error que


ha provocado la ejecucin del bloque CATCH de una construccin
TRYCATCH.
Sintaxis: ERROR_MESSAGE ( ).

ERROR_NUMBER: Devuelve el nmero de error del error que


ha provocado la ejecucin del bloque CATCH de una construccin
TRYCATCH.
Sintaxis: ERROR_NUMBER ( ).

21
Universidad Nacional de Cajamarca Base de Datos II

ERROR_PROCEDURE: Devuelve el nombre del procedimiento


almacenado o del desencadenador en el que se ha producido un
error que ha causado la ejecucin de un bloque CATCH de una
construccin TRYCATCH.
Sintaxis: ERROR_PROCEDURE ( ).

ERROR_SEVERITY: Devuelve la gravedad del error que


provoc la ejecucin del bloque CATCH de una construccin
TRYCATCH.
Sintaxis: ERROR_SEVERITY ( ).

ERROR_STATE: Devuelve el nmero de estado del error que


provoc que se ejecutara el bloque CATCH de una construccin
TRYCATCH. Sintaxis: ERROR_STATE ( ).

FORMATMESSAGE: Construye un mensaje desde un mensaje


existente en sys.messages o desde una cadena proporcionada. La
funcionalidad de FORMATMESSAGE es similar a la de la
instruccin RAISERROR. Sin embargo, RAISERROR imprime el
mensaje inmediatamente, mientras que FORMATMESSAGE
devuelve el mensaje formateado para que se pueda seguir
procesando.
Sintaxis: FORMATMESSAGE ( { msg_number | ' msg_string ' }
, [ param_value [ ,...n ] ] ).

GET_FILESTREAM_TRANSACTION_CONTEXT:
Devuelve un token que representa el contexto de transaccin actual
de una sesin. Las aplicaciones usan este token para enlazar las
operaciones de transmisin por secuencias del sistema de archivos
FILESTREAM a la transaccin.
Sintaxis: GET_FILESTREAM_TRANSACTION_CONTEXT ().

GETANSINULL: Devuelve la nulabilidad predeterminada para la


base de datos para esta sesin.
Sintaxis: GETANSINULL ([ 'database' ] ).

--En el siguiente ejemplo se devuelve la nulabilidad


predeterminada para la base de datos AdventureWorks2012.
GO
SELECT GETANSINULL('AdventureWorks2012') as Aviso
GO

HOST_ID: Devuelve el nmero de identificacin de la estacin de


trabajo. El nmero de identificacin de la estacin de trabajo es el

22
Universidad Nacional de Cajamarca Base de Datos II

identificador de proceso (PID) de la aplicacin en el equipo cliente


que se est conectando a SQL Server.
Sintaxis: HOST_ID ().

--En el siguiente ejemplo se crea una tabla que utiliza


HOST_ID() en una definicin de DEFAULT para registrar el
identificador de terminal de los equipos que insertan
filas en una tabla que registra pedidos.
CREATE TABLE Orden (OrderID int PRIMARY KEY,
CustomerID nchar(5) REFERENCES
Customers(CustomerID),
TerminalID char(8) NOT NULL DEFAULT HOST_ID(),
OrderDate datetime NOT NULL,
ShipDate datetime NULL,
ShipperID int NULL REFERENCES
Shippers(ShipperID))
GO

HOST_NAME: Devuelve el nombre de la estacin de trabajo.


Sintaxis: HOST_NAME ().

--En el ejemplo siguiente se crea una tabla que utiliza


HOST_NAME () en una definicin DEFAULT para registrar el
nombre de estacin de trabajo de los equipos que insertan
filas en una tabla que registra pedidos.
CREATE TABLE Ordenn
(OrderID int PRIMARY KEY,
CustomerID nchar(5) REFERENCES
Customers(CustomerID),
Workstation nchar(30) NOT NULL DEFAULT HOST_NAME(),
OrderDate datetime NOT NULL,
ShipDate datetime NULL,
ShipperID int NULL REFERENCES
Shippers(ShipperID))
GO

ISNULL: Sustituye el valor NULL por el valor especificado.


Sintaxis: ISNULL (check_expression , replacement_value ).

--En el ejemplo siguiente se busca el promedio del precio de


todos los productos. Sustituye el valor 10 para todas las
entradas NULL en la columna precio unitario de la tabla
Productos.
GO
SELECT AVG(ISNULL(UnitPrice, 10)) as Total
FROM productos
GO

ISNUMERIC: Determina si una expresin es un tipo numrico


vlido.
Sintaxis: ISNUMERIC expression).

MIN_ACTIVE_ROWVERSION: Devuelve el valor rowversion


activo ms bajo de la base de datos actual. Un valor rowversion

23
Universidad Nacional de Cajamarca Base de Datos II

est activo si se utiliza en una transaccin que no se ha confirmado


todava. Para obtener ms informacin, vea rowversion ( Transact-
SQL ) .
Sintaxis: MIN_ACTIVE_ROWVERSION

NEWID: Crea un valor nico de tipo uniqueidentifier.


Sintaxis: NEWID ( ).

NEWSEQUENTIALID: Crea un identificador nico global


(GUID) que es mayor que cualquier GUID generado previamente
por esta funcin en un equipo especfico desde que se inici
Windows. Despus de reiniciar Windows, el GUID se puede volver
a iniciar desde un intervalo ms bajo, pero sigue siendo
globalmente nico. Cuando una columna de GUID se utiliza como
identificador de fila, el uso de NEWSEQUENTIALID puede ser
ms rpido que el uso de la funcin NEWID. La razn es que la
funcin NEWID causa actividad aleatoria y utiliza menos pginas
de datos en cach. El uso de NEWSEQUENTIALID tambin
ayuda a rellenar por completo las pginas de datos y de ndices.
Sintaxis: NEWSEQUENTIALID ( ).

ROWCOUNT_BIG: Devuelve el nmero de filas afectadas por la


ltima instruccin ejecutada. Esta funcin acta como
@@ROWCOUNT, excepto el tipo de valor devuelto de
ROWCOUNT_BIG es bigint.
Sintaxis: ROWCOUNT_BIG ( ).

SESSION_CONTEXT: Devuelve el valor de la clave


especificada en el contexto de la sesin actual. El valor se establece
mediante el sp_set_session_context (Transact-SQL)
procedimiento.
Sintaxis: SESSION_CONTEXT(N'key').

SESSION_ID: Devuelve el identificador del elemento actual


Almacenamiento de datos SQL o Almacenamiento de datos
paralelos sesin.
Sintaxis: -- Azure SQL Data Warehouse and Parallel Data
Warehouse

XACT_STATE: Funcin escalar que notifica el estado de la


transaccin de usuario de una solicitud que se est ejecutando
actualmente. XACT_STATE indica si la solicitud tiene una
transaccin de usuario activa y si se puede confirmar la
transaccin. Sintaxis: XACT_STATE ().

24
Universidad Nacional de Cajamarca Base de Datos II

2.6. Funciones de Configuracin


Las funciones de configuracin devuelven informacin acerca de las
opciones de configuracin actuales, son todas no deterministas. Por ello,
estas funciones no siempre devuelven el mismo resultado cada vez que se
invocan, incluso con el mismo conjunto de valores de entrada. Las
funciones de configuracin son las siguientes:
@@DATEFIRST: Devuelve (tipo de dato devuelto tinyint) el
valor actual para Set DateFirst.

--Que numero de da es ahora.


SET DATEFIRST 5
SELECT @@DATEFIRST AS 'First Day' ,DATEPART(dw,
SYSDATETIME()) AS 'Today'

@@DBTS: Devuelve el valor del tipo de datos timestamp


(varbinary) actual de la base de datos actual. Se garantiza que la
marca de tiempo es nica en la base de datos.

--El valor de TimeStamp para Northwind


go
Select @@DBTS
go

@@LANGID: Devuelve el identificador (Id.) de idioma local del


idioma que se est utilizando actualmente, tipo de dato que
devuelve smallint.

--Identificar de idioma, el nombre del idioma y nombre del


servidor.
SET LANGUAGE 'Italian'
SELECT @@LANGID AS 'Language ID'

@@LANGUAGE: Devuelve (tipo de dato devuelto nvarchar) el


nombre del idioma en uso.
--En el siguiente ejemplo se devuelve el idioma de la sesin
actual.
SELECT @@LANGUAGE AS 'Language Name'

@@LOCK_TIMEOUT: Devuelve el valor actual de tiempo de


espera de bloqueo en milisegundos para la sesin actual, tipo de
valor que devuelve integer.

--Tiempo de espera
select @@LOCK_TIMEOUT
go

25
Universidad Nacional de Cajamarca Base de Datos II

@@MAX_CONNECTIONS: Devuelve el nmero mximo de


conexiones de usuario simultneas que se permiten en una
instancia de SQL Server. El nmero devuelto no es necesariamente
el nmero configurado actualmente, devuelve tipo de dato integer.

--En el ejemplo siguiente se muestra cmo devolver el nmero


mximo de conexiones de usuario simultneas en una instancia
de SQL Server. En el ejemplo se considera que SQL Server no
se ha configurado de nuevo para utilizar menos conexiones de
usuario.
SELECT @@MAX_CONNECTIONS AS 'Max Connections'

@@MAX_PRECISION: Devuelve el nivel de precisin utilizado


por decimal y numrico tipos de datos segn lo establecen
actualmente en el servidor, tipo de dato que devuelve tinyint.

SELECT @@MAX_PRECISION AS 'Max Precision'

@@NESTLEVEL: Devuelve el nivel de anidamiento de la


ejecucin del procedimiento almacenado actual (inicialmente 0) en
el servidor local, tipo de dato que devuelve int.

--Nivel de anidamiento
select @@NESTLEVEL
go

@@OPTIONS: Devuelve informacin acerca de las opciones


SET actuales, integer.

--Ver el valor decimal de las opciones set


select @@OPTIONS
go

@@REMSERVER: Devuelve el nombre del servidor de base de


datos remoto de SQL Server, tal y como aparece en el registro de
inicio de sesin, nvarchar (128).

@@SERVERNAME: Devuelve el nombre del servidor local que


ejecuta SQL Server, nvarchar.

--Nombre del servidor local en el que se esta ejecutando


SQL server
SELECT @@SERVERNAME AS 'Server Name'

26
Universidad Nacional de Cajamarca Base de Datos II

@@SERVICENAME: Devuelve el nombre de la clave del


Registro bajo la cual se ejecuta SQL Server. @@SERVICENAME
devuelve MSSQLSERVER Si la instancia actual es la instancia
predeterminada, esta funcin devuelve el nombre de instancia si la
instancia actual es una instancia con nombre, nvarchar.

--Nombre de la clave del registro bajo la cual se ejecuta


SQL Server.
SELECT @@SERVICENAME AS 'Service Name'

@@SPID: Devuelve el Id. de sesin del proceso de usuario actual,


tipo de dato smallint.

--Id. de la sesin
SELECT @@SPID AS 'ID', SYSTEM_USER AS 'Login Name', USER
AS 'User Name'

@@TEXTSIZE: Devuelve el valor actual de la TEXTSIZE


opcin, tipo de dato integer.

--Valor de la opcin TextSize


SET TEXTSIZE 0
SELECT @@TEXTSIZE AS 'Text Size'
SET TEXTSIZE 2048
SELECT @@TEXTSIZE AS 'Text Size'

@@VERSION: Devuelve informacin del sistema y la


compilacin para la instalacin actual de SQL Server, tipo de dato
nvarchar.

--Versin de SQL Server


select @@VERSION
go

2.7. Funciones Matemticas


Las siguientes funciones escalares realizan un clculo, normalmente
basado en valores de entrada proporcionados como argumentos, y
devuelven un valor numrico.
Las funciones aritmticas, como ABS, CEILING, DEGREES, FLOOR,
POWER, RADIANS y SIGN, devuelven un valor del mismo tipo de datos
que el valor de entrada. Funciones trigonomtricas y otras funciones,

27
Universidad Nacional de Cajamarca Base de Datos II

incluidas EXP, LOG, LOG10, SQUARE y SQRT, conversin los valores


de entrada a float y devolver un float valor.
Todas las funciones matemticas, excepto RAND, son deterministas, lo
que significa que devuelven el mismo resultado cada vez que se llaman
con un conjunto especfico de valores de entrada. RAND es determinista
solo cuando se especifica un parmetro de inicializacin.
ABS: Funcin matemtica que devuelve el valor absoluto positivo
de una expresin numrica especfica. (ABS cambios de los
valores a valores positivos negativos. ABSno tiene ningn efecto
en cero o valores positivos), Devuelve el mismo tipo que
numeric_expression.
Sintaxis: ABS numeric_expression ).

ACOS: Una funcin matemtica que devuelve el ngulo, en


radianes, cuyo coseno es el especificado float expresin; tambin
se denomina arco coseno. Sintaxis: ACOS (float_expression ).

--En el ejemplo siguiente se devuelve el valor ACOS del nmero


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

ASIN: Devuelve el ngulo, en radianes, cuyo seno es el


especificado float expresin. Tambin se denomina arco seno.
Sintaxis: ASIN (float_expression).

ATAN: Devuelve el ngulo en radianes cuya tangente es un


determinado float expresin. Tambin se denomina arcotangente.
Sintaxis: ATAN (float_expression ).

ATN2: Devuelve el ngulo (en radianes) formado por el eje X


positivo y la lnea 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.
Sintaxis: ATN2 (float_expression, float_expression ).

LIMITE SUPERIOR: Devuelve el entero ms pequeo mayor o


igual que la expresin numrica especificada. Sintaxis: CEILING
(numeric_expression).

28
Universidad Nacional de Cajamarca Base de Datos II

COS: Es una funcin matemtica que devuelve el coseno


trigonomtrico del ngulo especificado, expresado en radianes, en
la expresin dada.
Sintaxis: COS (float_expression).
--El ejemplo siguiente devuelve el valor COS del ngulo
especfico.
DECLARE @angle float
SET @angle = 14.78
SELECT 'The COS of the angle is: ' +
CONVERT(varchar,COS(@angle))
GO

COT: Una funcin matemtica que devuelve la cotangente


trigonomtrica del ngulo especificado, en radianes, de la manera
especificada float expresin.
Sintaxis: COT (float_expression ).

--El ejemplo siguiente devuelve el valor COT del ngulo


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

GRADOS: Devuelve el ngulo correspondiente en grados para un


ngulo especificado en radianes.
Sintaxis: DEGREES (numeric_expression ).

--En el ejemplo siguiente se devuelve el nmero de grados en un


ngulo de PI/2 radianes.
SELECT 'The number of degrees in PI/2 radians is: ' +
CONVERT(varchar, DEGREES((PI()/2)))
GO

EXP: Devuelve el valor exponencial del elemento especificado


float expresin.
Sintaxis: EXP (float_expression).

FLOOR: Devuelve el entero ms grande que sea menor o igual


que la expresin numrica especificada.
Sintaxis: FLOOR numeric_expression ).

REGISTRO: Devuelve el logaritmo natural del elemento


especificado float expresin en SQL Server.
Sintaxis: LOG (float_expression [, base ] ).

29
Universidad Nacional de Cajamarca Base de Datos II

LOG10: Devuelve el logaritmo en base 10 del elemento


especificado float expresin.
Sintaxis: LOG10 float_expression).

--En el siguiente ejemplo se calcula el LOG10 de la variable


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

PI: Devuelve el valor constante de PI.


Sintaxis: PI ( ).

--El siguiente ejemplo devuelve el valor de PI.


SELECT PI() as VALOR
GO

POWER: Devuelve el valor de la expresin especificada elevado


a la potencia especificada.
Sintaxis: POWER (float_expression , y ).

RADIANES: Devuelve los radianes de una expresin numrica en


grados.
Sintaxis: RADIANS (numeric_expression).

RAND: Devuelve un seudoaleatorios float valor comprendido


entre 0 y 1, ambos excluidos.
Sintaxis: RAND ([ seed ] ).

REDONDEAR: Devuelve un valor numrico, redondeado a la


longitud o precisin especificadas.
Sintaxis: ROUND ( numeric_expression , length [ ,function ] ).

--En el ejemplo siguiente se muestran redondeos y


aproximaciones.
SELECT ROUND(123.4545, 2), ROUND(123.45, -2)

INICIO DE SESION: Devuelve el signo positivo (+1), cero (0) o


negativo (-1) de la expresin especificada.
Sintaxis: SIGN (numeric_expression ).

30
Universidad Nacional de Cajamarca Base de Datos II

SENO: Devuelve el seno trigonomtrico del ngulo especificado,


en radianes y en un valor numrico aproximado, float, expresin.
Sintaxis: SIN ( float_expression ).

--En el ejemplo siguiente se calcula el seno de un ngulo


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

SQRT: Devuelve la raz cuadrada del valor de tipo flotante


especificado.
Sintaxis: SQRT (float_expression ).

CUADRADO: Devuelve el cuadrado del valor de tipo flotante


especificado.
Sintaxis: SQUARE (float_expression).

--En el ejemplo siguiente se devuelve el volumen de un cilindro


de 1 pulgada de radio y 5 pulgadas de alto.
DECLARE @h float, @r float
SET @h = 5
SET @r = 1
SELECT PI()* SQUARE(@r)* @h AS 'Cyl Vol'

TAN: Devuelve la tangente de la expresin de entrada.


Sintaxis: TAN (float_expression ).

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


SELECT TAN(PI()/2)

31
Universidad Nacional de Cajamarca Base de Datos II

III. Referencias

https://docs.microsoft.com/es-es/sql/t-sql/functions/functions

32

También podría gustarte