Documente Academic
Documente Profesional
Documente Cultură
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.
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.
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
Ejemplos:
SELECT FROM
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
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
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.
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
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 } | * )
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.
Ejemplos:
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
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 )
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.
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()
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
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
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
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
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
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
DATENAME(No Determinista)
SELECT DATENAME(dy, getdate()) -----------------------------259
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
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')
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
CHAR
Una funcin de cadena que convierte un cdigo ASCII int en un carcter. Sintaxis: Sintaxis: CHAR ( expresion_ expresion_entera ) Argumentos
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
CHARINDEX
Devuelve la posicin inicial de la expresin especificada en una cadena de caracteres.
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
LEFT
select left(nombre_empresa,5),nombre_empresa from cargo_internacional where codi_cargo=4 nombre_empresa ---------------------------------------CARGO BA WORLD
----CARGO
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
LEN
Devuelve el nmero de caracteres, de la expresin de cadena dada, excluidos los espacios finales en blanco. Sintaxis: Sintaxis: LEN ( string_expression ) Argumentos
select len(nombre),nombre from empleado where codi_empl>5 nombre ----------- -----------------------------8 Federico 6 Carlos 6 Ulises 8 Leopoldo 3 Ana
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.
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
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.
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
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
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*
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
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