Sunteți pe pagina 1din 46

Bases de Datos I Funciones en SQL Server

Ing. Ricardo Naranjo

Ing. Ricardo Naranjo

FUNCIONES

Determinismo de funcin Las funciones integradas de SQL Server 2000 son deterministas o no deterministas. Las funciones son deterministas cuando devuelven siempre el mismo resultado cada vez que se les llama con un conjunto especfico de valores de entrada. Las funciones son no deterministas cuando es posible que devuelvan distintos resultados cada vez que se les llama con un mismo conjunto especfico de valores de entrada.

Ing. Ricardo Naranjo

Funciones
El lenguaje de programacin Transact-SQL proporciona tres tipos de funciones: 1. Funciones de agregado 2. Funciones escalares 3. Funciones de conjunto de filas Funciones de agregado Las funciones de agregado realizan un clculo sobre un conjunto de valores y devuelven un solo valor. Con la excepcin de COUNT, las funciones de agregado omiten los valores NULL. Las funciones de agregado se suelen utilizar con la clusula GROUP BY de la instruccin SELECT. Todas las funciones de agregado son deterministas; devuelven siempre el mismo valor cada vez que se les llama con un conjunto determinado de valores de entrada.

Ing. Ricardo Naranjo

AVG
Devuelve la media de los valores de un grupo, sin considerar los valores nulos. Sintaxis AVG ( [ ALL | DISTINCT ] expression ) Argumentos: ALL Aplica la funcin de agregado a todos los valores. ALL es el valor por defecto. DISTINCT Especifica que AVG se ejecute slo sobre una instancia de cada valor, sin importar el nmero de veces que aparezca el valor. Es una expresin de tipo numrico. (int, decimal, money,float )

expression

Ing. Ricardo Naranjo

Ejemplos:

SELECT FROM

AVG(prec_unit) AS Promedio, SUM(prec_unit) AS Suma PRODUCTO Suma 778

Promedio 111,1428

SELECT codi_cate, AVG(prec_unit) AS Promedio, SUM(prec_unit) AS Suma FROM PRODUCTO GROUP BY codi_cate ORDER BY codi_cate DESC Codi_catePromedio Codi_catePromedio Suma 5 8,5 2 198,6666 596 1 82,5

17 165

Ing. Ricardo Naranjo

Ejemplos:

SELECT codi_orde, AVG(DISTINCT cantidad) AS CantidadPromedio1, AVG(cantidad) AS CantidadPromedio2 FROM DETALLE_ORDEN WHERE (codi_orde IN (1, 2)) GROUP BY codi_orde codi_orde 1 15 2 30 CantidadPromedio CantidadPromedio2 17 33

Ing. Ricardo Naranjo

COUNT
Devuelve el nmero de elementos de un grupo. Sintaxis COUNT ( { [ ALL | DISTINCT ] expression ] | * } ) Argumentos ALL Aplica la funcin de agregado a todos los valores. ALL es el valor predeterminado. DISTINCT Especifica que COUNT devuelva el nmero de valores nicos no NULL.

expression

Es una expresin de cualquier tipo excepto uniqueidentifier, text, image o ntext * Especifica que se tienen que contar todas las filas para devolver el nmero total de filas de una tabla. COUNT(*) no recibe parmetros y no se puede utilizar con DISTINCT. COUNT(*) no requiere el parmetro expresin porque, por definicin, no utiliza informacin acerca de ninguna columna concreta. COUNT(*) devuelve el nmero de filas de una tabla especificada sin eliminar las duplicadas. Cuenta todas las filas, incluidas las que contienen valores NULL.

Ing. Ricardo Naranjo

Ejemplos:

select count(codi_depa) from departamento ----------8 select count(distinct pais),count(pais) from proveedor ----------- ----------3 4 select count(*) from producto where prec_unit >70 ----------4

Ing. Ricardo Naranjo

COUNT_BIG

Devuelve el nmero de elementos de un grupo. COUNT_BIG funciona como COUNT. La nica diferencia entre ambas est en los valores de retorno: COUNT_BIG siempre devuelve un valor de tipo de datos bigint. COUNT siempre devuelve un valor de tipo de datos int. Sintaxis COUNT_BIG ( { [ ALL | DISTINCT ] expression } | * )

Ing. Ricardo Naranjo

MAX
Devuelve el valor mximo de la expresin. Sintaxis MAX ( [ ALL | DISTINCT ] expression ) Argumentos ALL Aplica la funcin de agregado a todos los valores. ALL es el valor predeterminado. DISTINCT Especifica que se considera cada valor nico. DISTINCT no tiene ningn significado con MAX y slo se incluye por compatibilidad.

expression
Se trata de una constante, nombre de columna o funcin, y cualquier combinacin de operadores aritmticos, binarios y de cadena. MAX se puede utilizar con columnas de tipo numrico, carcter y datetime, pero no con las de tipo bit.

Ing. Ricardo Naranjo

Ejemplos:

select max(prec_unit) from producto --------------------270.0000

Ing. Ricardo Naranjo

MIN
Devuelve el valor mnimo de la expresin. Sintaxis MIN ( [ ALL | DISTINCT ] expression )

expression
Se trata de una constante, nombre de columna o funcin, y cualquier combinacin de operadores aritmticos, binarios y de cadena. MIN se puede utilizar con columnas de tipo numrico, char, varchar o datetime, pero no con columnas de tipo bit. select min(nombre) from producto ---------------------------------------Mainboard Intel 845GV

Ing. Ricardo Naranjo

SUM

Devuelve la suma de todos los valores o de slo los valores DISTINCT en la expresin especificada. SUM slo puede utilizarse con columnas numricas. Los valores nulos se pasan por alto. Sintaxis SUM ( [ ALL | DISTINCT ] expression )

Ing. Ricardo Naranjo

Funciones escalares
Operan sobre un valor y despus devuelven otro valor. Las funciones escalares se pueden utilizar donde la expresin sea vlida. Funciones de fecha y hora Estas funciones escalares realizan una operacin sobre un valor de fecha y hora de entrada, y devuelven un valor de cadena, numrico o de fecha y hora.

Ing. Ricardo Naranjo

GETDATE
Devuelve la fecha y hora actuales del sistema en el formato interno estndar de Microsoft SQL Server para los valores datetime. Sintaxis GETDATE ( ) Tipos devueltos Datetime Es posible utilizar funciones de fecha en la lista de seleccin de la instruccin SELECT o en la clusula WHERE de una consulta.

SELECT GETDATE()

Ing. Ricardo Naranjo

DATEADD (Determinista)
Devuelve un valor datetime nuevo que se basa en la suma de un intervalo a la fecha especificada. Sintaxis DATEADD ( datepart , number, date ) Argumentos

datepart

Es el parmetro que especifica en qu parte de la fecha se efecta la operacin.

Ing. Ricardo Naranjo

Partes de las fechas y abreviaturas reconocidas por Microsoft SQL Server. Parte de la fecha Year quarter (3 meses) Month Dayofyear (Dia del ao) Day Week (Semana del ao) Hour minute second millisecond Abreviaturas yy, yyyy qq, q mm, m dy, y dd, d wk, ww hh mi, n ss, s ms

Ing. Ricardo Naranjo

number Es el valor que se utiliza para incrementar datepart. datepart. Si especifica un valor no entero, se descarta la parte fraccionaria del valor. valor. Por ejemplo, si especifica day para datepart y1.75 para number, date se incrementa en 1. fecha Es una expresin que devuelve un valor datetime o smalldatetime, o una cadena de caracteres con formato de fecha. fecha. SELECT fech_orde,DATEADD(day, 10, 10, fech_orde) AS FechaIncrementada FROM orden fech_orde FechaIncrementada ------------------------------------------------------------------------------200420042004-0707-20 00:00:00.000 2004-0707-30 00:00:00.000 200420042004-0707-16 00:00:00.000 2004-0707-26 00:00:00.000 200420042004-0707-25 00:00:00.000 2004-0808-04 00:00:00.000 SELECT fech_orde,DATEADD(d, 10, fech_orde) AS FechaIncrementada FROM orden

Ing. Ricardo Naranjo

DATEDIFF(Determinista)
Devuelve el nmero de lmites de fecha y hora que hay entre dos fechas especificadas. Sintaxis DATEDIFF ( datepart , startdate , enddate ) Argumentos

datepart

Es el parmetro que indica en qu parte de la fecha se calcula la diferencia. startdate Es la fecha de comienzo para el clculo. enddate Es la fecha final para el clculo. enddate es una expresin que devuelve un valor datetime o smalldatetime, o una cadena de caracteres con formato de fecha. Tipos devueltos integer

Ing. Ricardo Naranjo

Observaciones startdate se resta de enddate. Si startdate es posterior a enddate, se devuelve un valor negativo. DATEDIFF produce un error si el resultado est fuera del intervalo de valores enteros

SELECT fech_orde,fech_emba,DATEDIFF(dd, fech_orde, fech_emba) AS Diferencia FROM orden fech_orde ----------------------------20042004-0707-20 00:00:00.000 20042004-0707-16 00:00:00.000 20042004-0707-25 00:00:00.000 20042004-0808-08 00:00:00.000 20042004-0808-13 00:00:00.000 fech_emba ----------------------------------------------------------------------------------20042004-0808-09 00:00:00.000 20042004-0808-09 00:00:00.000 20042004-0808-09 00:00:00.000 20042004-0808-20 00:00:00.000 20042004-0808-20 00:00:00.000 Diferencia ------------------20 24 15 12 7

Ing. Ricardo Naranjo

DATENAME(No Determinista)
Devuelve una cadena de caracteres que representa la parte de la fecha especificada. especificada. Sintaxis DATENAME ( datepart , date ) Argumentos:

datepart

Es el parmetro que especifica la parte de la fecha que se va a devolver. Tipos devueltos nvarchar SELECT DATENAME(mm, getdate()) AS 'Mes Actual' Mes Actual -----------------------------Septiembre

Ing. Ricardo Naranjo

DATENAME(No Determinista)
SELECT DATENAME(dy, getdate()) -----------------------------259

SELECT DATENAME(wk, getdate()) -----------------------------38 select datename(dw,getdate()) -----------------------------Mircoles

Ing. Ricardo Naranjo

DAY
Devuelve un entero que representa la parte del da de la fecha especificada. Sintaxis DAY ( date ) Argumentos: Fecha: Fecha: Es una expresin de tipo datetime o smalldatetime. Tipo devuelto: devuelto:int SELECT DAY('01/09/2004') AS 'Numero de Dia' Numero de Dia ------------1

Ing. Ricardo Naranjo

MONTH
Devuelve un entero que representa el mes de una fecha especificada.
Sintaxis MONTH ( date ) Argumentos: Fecha : Es una expresin que devuelve un valor de tipo datetime o smalldatetime, o bien una cadena de caracteres con un formato de fecha. El tipo de datos datetime slo se debe utilizar para fechas posteriores al 1 de enero de 1753. Tipo devuelto: devuelto: int SELECT MONTH('14/07/2003') ----------7
Ing. Ricardo Naranjo

YEAR
Devuelve un entero que representa la parte del del ao de la fecha especificada. Sintaxis YEAR ( date ) Argumentos: Fecha: Fecha: Es una expresin de tipo datetime o smalldatetime. Tipo devuelto: devuelto:Int Ejemplo: SELECT "Ao" = YEAR('10/12/2002')

Ing. Ricardo Naranjo

Funciones de cadena
Estas funciones escalares realizan una operacin sobre una cadena de entrada y devuelven un valor de cadena o un valor numrico. ASCII: ASCII: Devuelve el cdigo ASCII del carcter ms a la izquierda de una expresin de caracteres Sintaxis: ASCII(cadena ASCII(cadena ) Argumentos: cadena: Es una expresin de tipo char o varchar. varchar. Tipo devuelto: devuelto:Int Ejemplo: select ascii('p') ----------112

select ascii('perro') ----------112


Ing. Ricardo Naranjo

CHAR
Una funcin de cadena que convierte un cdigo ASCII int en un carcter. Sintaxis: Sintaxis: CHAR ( expresion_ expresion_entera ) Argumentos

expresion_ expresion_entera: Es un entero entre 0 y 255. La funcin devuelve NULL si la


expresin de tipo integer no se encuentra dentro de dicho intervalo. Tipos devueltos char(1) select char(64) ---@ select char(500) ---NULL

Ing. Ricardo Naranjo

CHAR se puede utilizar para insertar caracteres de control en cadenas de caracteres. A continuacion muestro algunos caracteres de control comnmente usados. Carcter de control Tabulador Nueva lnea Retorno de carro (Enter) Valor CHAR(9) CHAR(10) CHAR(13)

select 'Carlos + char(9) + 'Muoz + char(10) + 'Jose + 'Garcia + char(13) + 'Gabriela --------------------------------Carlos Muoz Jose Garcia Gabriela

Ing. Ricardo Naranjo

CHARINDEX
Devuelve la posicin inicial de la expresin especificada en una cadena de caracteres.

Sintaxis: Sintaxis: CHARINDEX ( expression1 , expression2 [ , start_location ] )


Expression1: Expression1: Es una expresin que contiene la secuencia de caracteres que se desea buscar, generalmente cadenas de caracteres cortas. Expression2: Expression2: Es una expresin, normalmente una columna, en la que se busca la cadena especificada. expression2 es de la categora del tipo de datos cadena de caracteres. start_location: Es la posicin del carcter de expression2 en el que se desea empezar la bsqueda de expression1. Si no se especifica start_location, o es un nmero negativo o es cero, la bsqueda empieza al principio de la cadena expression2. Tipo devuelto: devuelto: int
Ing. Ricardo Naranjo

CHARINDEX
Ejemplo: SELECT CHARINDEX('reporte', 'Para el reporte de Enero', 0) ----------9 select charindex('BA',nombre_empresa,0) posicion,nombre_empresa from cargo_internacional posicion nombre_empresa ----------- ---------------------------------------0 CARGO EXPRESS 0 CARGO SUR 0 CARGO KLM 7 CARGO BA WORLD
Ing. Ricardo Naranjo

LEFT
Devuelve la parte izquierda de una cadena de caracteres con el nmero de caracteres especificado. Sintaxis: Sintaxis: LEFT ( character_expression , integer_expression ) Argumentos Es una expresin de caracteres. character_expression puede ser una constante, una variable o una columna, y puede ser de cualquier tipo de datos (excepto text o ntext) ntext que se pueda convertir implcitamente a varchar o nvarchar. nvarchar

character_expression

integer_expression: integer_expression: Es un entero positivo que especifica cuntos caracteres de character_expression se devolvern. Si integer_expression es negativo, se
devuelve un error. Tipos devueltos: devueltos: varchar o nvarchar

Ing. Ricardo Naranjo

LEFT
select left(nombre_empresa,5),nombre_empresa from cargo_internacional where codi_cargo=4 nombre_empresa ---------------------------------------CARGO BA WORLD

----CARGO

Ing. Ricardo Naranjo

RIGHT
Devuelve la parte derecha de una cadena de caracteres con el nmero de caracteres especificado. Sintaxis RIGHT ( character_expression , integer_expression )

character_expression

Es una expresin de caracteres. character_expression puede ser una constante, una variable o una columna, y puede ser de cualquier tipo de datos (excepto text o ntext) ntext que se pueda convertir implcitamente a varchar o nvarchar. nvarchar

integer_expression: integer_expression: Es un entero positivo que especifica cuntos caracteres de character_expression se devolvern. Si integer_expression es negativo, se
devuelve un error. Tipos devueltos: devueltos: varchar o nvarchar
Ing. Ricardo Naranjo

RIGHT
select right(nombre_empresa,5),nombre_empresa from cargo_internacional where codi_cargo=4 nombre_empresa ---------------------------------------CARGO BA WORLD

----WORLD

Ing. Ricardo Naranjo

LEN

Devuelve el nmero de caracteres, de la expresin de cadena dada, excluidos los espacios finales en blanco. Sintaxis: Sintaxis: LEN ( string_expression ) Argumentos

string_expression: string_expression: Es la cadena a medir. medir.


Tipos devueltos int

Ing. Ricardo Naranjo

select len(nombre),nombre from empleado where codi_empl>5 nombre ----------- -----------------------------8 Federico 6 Carlos 6 Ulises 8 Leopoldo 3 Ana

Ing. Ricardo Naranjo

SUBSTRING
Permite seleccionar una subcadena dentro de una cadena de caracteres indicando la posicion de la subcadena. SUBSTRING ( expression , start , length ) Argumentos: Expression: Puede ser cualquier cadena de caracteres, columna o expresin que incluye una columna. Start: Es un entero que especifica el punto en que comienza la subcadena. Length:Es un entero positivo que especifica el nmero de caracteres o de bytes de expression que se devuelven. Si length es negativo, se devuelve un error.

Ing. Ricardo Naranjo

select nombre,substring(nombre,1,2) from empleado nombre ------------------------------ ---Nancy Na Jose Jo Jose Jo Jessica Je Carmen Ca Federico Fe Carlos Ca Ulises Ul Leopoldo Le Ana An

Ing. Ricardo Naranjo

LOWER
Convierte a minsculas los datos de caracteres que estn en maysculas. Sintaxis: LOWER ( character_expression ) Argumentos: character_expression: Es una expresin de caracteres. character_expression puede ser una constante, una variable o una columna, y debe ser de un tipo de datos que se pueda convertir implcitamente a varchar.

Tipo devuelto: varchar

Ing. Ricardo Naranjo

select Apellido,lower(apellido) apellido from empleado


Apellido apellido ------------------------------ -----------------------------Romero romero Menoscal menoscal Santacruz santacruz Ruiz ruiz Alvarez alvarez Alcarado alcarado Rodriguez rodriguez Martinez martinez Muoz muoz Orozco orozco

Ing. Ricardo Naranjo

UPPER
Convierte caracteres a mayscula. Sintaxis: UPPER ( character_expression ) Argumentos character_expression: Es una expresin de datos de tipo carcter. character_expression puede ser una constante, una variable o una columna de datos de tipo carcter. Tipos devueltos: varchar

Ing. Ricardo Naranjo

select Nombre Producto,upper(nombre) PRODUCTO from producto


Producto PRODUCTO ---------------------------------------- ---------------------------------------Mainboard Intel 850 MAINBOARD INTEL 850 Mainboard Intel 845GV MAINBOARD INTEL 845GV Procesador Intel P4 2,0 GHZ PROCESADOR INTEL P4 2,0 GHZ Procesador Intel P4 2,8 GHZ PROCESADOR INTEL P4 2,8 GHZ Procesador Intel P4 3,0 GHZ PROCESADOR INTEL P4 3,0 GHZ Vino Tinto Concha y Toro VINO TINTO CONCHA Y TORO Vino Blanco Concha y Toro VINO BLANCO CONCHA Y TORO

Ing. Ricardo Naranjo

RTRIM
Devuelve una cadena de caracteres despus de truncar todos los espacios en blanco a la derecha. Sintaxis RTRIM ( character_expression ) Argumentos character_expression: Es una expresin de datos de tipo carcter. character_expression puede ser una constante, una variable o una columna de datos de tipo carcter o binarios. Tipos devueltos varchar

Ing. Ricardo Naranjo

SELECT 'Cinco espacios tiene esta sentencia al final ', '*Final*'+ CHAR(13)+'Sin espacios:'+ RTRIM('Cinco espacios tiene esta sentencia al final ')+ '*Final* ------------------------------------------------Cinco espacios tiene esta sentencia al final *Final* Sin espacios:Cinco espacios tiene esta sentencia al final*Final*

Ing. Ricardo Naranjo

LTRIM
Suprime los espacios que se encuentran a la izquierda de una cadena de caracteres. Sintaxis: LTRIM ( character_expression ) Argumento: character_expression: Es una expresin de caracteres. character_expression puede ser una constante, una variable o una columna, y debe ser de un tipo de datos que se pueda convertir implcitamente a varchar. Tipo devuelto: varchar

Ing. Ricardo Naranjo

SELECT nombre + ' '+LTRIM(' Romero') from empleado ---------------------------------------Nancy Romero Jose Romero Jose Romero Jessica Romero Carmen Romero Federico Romero Carlos Romero Ulises Romero Leopoldo Romero Ana Romero
Ing. Ricardo Naranjo

S-ar putea să vă placă și