Funciones en SQL Server

Published on July 2016 | Categories: Documents | Downloads: 52 | Comments: 0 | Views: 415
of 46
Download PDF   Embed   Report

Comments

Content

Bases de Datos I Funciones en SQL Server

Ing. Ricardo Naranjo

Ing. Ricardo Naranjo

FUNCIONES

• •

Determinismo de función 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 específico 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 específico de valores de entrada.

Ing. Ricardo Naranjo


• • • • • • •

Funciones
El lenguaje de programación 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 cálculo sobre un conjunto de valores y devuelven un solo valor. Con la excepción de COUNT, las funciones de agregado omiten los valores NULL. Las funciones de agregado se suelen utilizar con la cláusula GROUP BY de la instrucción 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 función de agregado a todos los valores. ALL es el valor por defecto. DISTINCT Especifica que AVG se ejecute sólo sobre una instancia de cada valor, sin importar el número de veces que aparezca el valor. Es una expresión de tipo numérico. (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 número de elementos de un grupo. Sintaxis COUNT ( { [ ALL | DISTINCT ] expression ] | * } ) Argumentos ALL Aplica la función de agregado a todos los valores. ALL es el valor predeterminado. DISTINCT Especifica que COUNT devuelva el número de valores únicos no NULL.

expression

Es una expresión de cualquier tipo excepto uniqueidentifier, text, image o ntext * Especifica que se tienen que contar todas las filas para devolver el número total de filas de una tabla. COUNT(*) no recibe parámetros y no se puede utilizar con DISTINCT. COUNT(*) no requiere el parámetro expresión porque, por definición, no utiliza información acerca de ninguna columna concreta. COUNT(*) devuelve el número 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 número 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 máximo de la expresión. Sintaxis MAX ( [ ALL | DISTINCT ] expression ) Argumentos ALL Aplica la función de agregado a todos los valores. ALL es el valor predeterminado. DISTINCT Especifica que se considera cada valor único. DISTINCT no tiene ningún significado con MAX y sólo se incluye por compatibilidad.

expression
Se trata de una constante, nombre de columna o función, y cualquier combinación de operadores aritméticos, binarios y de cadena. MAX se puede utilizar con columnas de tipo numérico, carácter 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 mínimo de la expresión. Sintaxis MIN ( [ ALL | DISTINCT ] expression )

expression
Se trata de una constante, nombre de columna o función, y cualquier combinación de operadores aritméticos, binarios y de cadena. MIN se puede utilizar con columnas de tipo numérico, 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 sólo los valores DISTINCT en la expresión especificada. SUM sólo puede utilizarse con columnas numéricas. Los valores nulos se pasan por alto. Sintaxis SUM ( [ ALL | DISTINCT ] expression )

Ing. Ricardo Naranjo

Funciones escalares
Operan sobre un valor y después devuelven otro valor. Las funciones escalares se pueden utilizar donde la expresión sea válida. Funciones de fecha y hora Estas funciones escalares realizan una operación sobre un valor de fecha y hora de entrada, y devuelven un valor de cadena, numérico o de fecha y hora.

Ing. Ricardo Naranjo

GETDATE
Devuelve la fecha y hora actuales del sistema en el formato interno estándar de Microsoft SQL Server para los valores datetime. Sintaxis GETDATE ( ) Tipos devueltos Datetime Es posible utilizar funciones de fecha en la lista de selección de la instrucción SELECT o en la cláusula 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 parámetro que especifica en qué parte de la fecha se efectúa la operación.

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 año) Day Week (Semana del año) 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 expresión 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 número de límites de fecha y hora que hay entre dos fechas especificadas. Sintaxis DATEDIFF ( datepart , startdate , enddate ) Argumentos

datepart

Es el parámetro que indica en qué parte de la fecha se calcula la diferencia. startdate Es la fecha de comienzo para el cálculo. enddate Es la fecha final para el cálculo. enddate es una expresión 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 parámetro 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()) -----------------------------Miércoles

Ing. Ricardo Naranjo

DAY
Devuelve un entero que representa la parte del día de la fecha especificada. Sintaxis DAY ( date ) Argumentos: Fecha: Fecha: Es una expresión 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 expresión 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 sólo 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 año de la fecha especificada. Sintaxis YEAR ( date ) Argumentos: Fecha: Fecha: Es una expresión de tipo datetime o smalldatetime. Tipo devuelto: devuelto:Int Ejemplo: SELECT "Año" = YEAR('10/12/2002')

Ing. Ricardo Naranjo

Funciones de cadena
Estas funciones escalares realizan una operación sobre una cadena de entrada y devuelven un valor de cadena o un valor numérico. ASCII: ASCII: Devuelve el código ASCII del carácter más a la izquierda de una expresión de caracteres Sintaxis: ASCII(‘cadena’ ASCII(‘cadena’ ) Argumentos: cadena: Es una expresión de tipo char o varchar. varchar. Tipo devuelto: devuelto:Int Ejemplo: select ascii('p') ----------112

select ascii('perro') ----------112
Ing. Ricardo Naranjo

CHAR
Una función de cadena que convierte un código ASCII int en un carácter. Sintaxis: Sintaxis: CHAR ( expresion_ expresion_entera ) Argumentos

expresion_ expresion_entera: Es un entero entre 0 y 255. La función devuelve NULL si la
expresión 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 comúnmente usados. Carácter de control Tabulador Nueva línea Retorno de carro (Enter) Valor CHAR(9) CHAR(10) CHAR(13)

select 'Carlos‘ + char(9) + 'Muñoz‘ + char(10) + 'Jose ‘ + 'Garcia‘ + char(13) + 'Gabriela‘ --------------------------------Carlos Muñoz Jose Garcia Gabriela

Ing. Ricardo Naranjo

CHARINDEX
Devuelve la posición inicial de la expresión especificada en una cadena de caracteres.

Sintaxis: Sintaxis: CHARINDEX ( expression1 , expression2 [ , start_location ] )
Expression1: Expression1: Es una expresión que contiene la secuencia de caracteres que se desea buscar, generalmente cadenas de caracteres cortas. Expression2: Expression2: Es una expresión, normalmente una columna, en la que se busca la cadena especificada. expression2 es de la categoría del tipo de datos cadena de caracteres. start_location: Es la posición del carácter de expression2 en el que se desea empezar la búsqueda de expression1. Si no se especifica start_location, o es un número negativo o es cero, la búsqueda 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 número de caracteres especificado. Sintaxis: Sintaxis: LEFT ( character_expression , integer_expression ) Argumentos Es una expresión 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 implícitamente a varchar o nvarchar. nvarchar

character_expression

integer_expression: 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. 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 número de caracteres especificado. Sintaxis RIGHT ( character_expression , integer_expression )

character_expression

Es una expresión 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 implícitamente a varchar o nvarchar. nvarchar

integer_expression: 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. 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 número de caracteres, de la expresión 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 expresión 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 número 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 minúsculas los datos de caracteres que estén en mayúsculas. Sintaxis: LOWER ( character_expression ) Argumentos: character_expression: Es una expresión 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 implícitamente 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 Muñoz muñoz Orozco orozco

Ing. Ricardo Naranjo

UPPER
Convierte caracteres a mayúscula. Sintaxis: UPPER ( character_expression ) Argumentos character_expression: Es una expresión de datos de tipo carácter. character_expression puede ser una constante, una variable o una columna de datos de tipo carácter. 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 después de truncar todos los espacios en blanco a la derecha. Sintaxis RTRIM ( character_expression ) Argumentos character_expression: Es una expresión de datos de tipo carácter. character_expression puede ser una constante, una variable o una columna de datos de tipo carácter 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 expresión 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 implícitamente 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

Sponsor Documents

Or use your account on DocShare.tips

Hide

Forgot your password?

Or register your new account on DocShare.tips

Hide

Lost your password? Please enter your email address. You will receive a link to create a new password.

Back to log-in

Close