Capitulo 1–Lección 5: Funciones Escalares

SQL Server 2008 ofrece una gran cantidad de funciones incorporadas en una gran variedad de categorías. Puede utilizar muchas de estas funciones para mejorar sus consultas. También puede utilizar muchas de estas funciones para llevar a cabo acciones tales como la inserción de datos, crear tablas, y la creación de Constantes.
Las funciones integradas se pueden utilizar en la cláusula SELECT o WHERE de una instrucción SELECT, pero para un rendimiento óptimo, se debe evitar el uso de funciones en la cláusula WHERE.
Cuando se utiliza una función integrada, que siguen con frecuencia el nombre de la función con paréntesis, incluso cuando no hay ningún parámetro. En muchos casos,los paréntesis vacíos indican al motor de base de datos para utilizar el valor actual.Por ejemplo, la función db_id devuelve el ID base de datos para la base de datos que está actualmente activo en el sistema. Debido a este comportamiento, muchas de las funciones del sistema son lo que se llama no determinista, lo que significa que el resultado puede variar y el sistema no tiene una lista de valores predeterminados para suministro de los resultados de la función.
La función ISNULL, por otro lado, es determinista, porque el valor que se suministrase encuentra dentro de la definición cuando la función ISNULL se llama.

Explicando las funciones escalares


Existe un gran número de funciones disponibles. Microsoft ha organizado estas funciones en grupos basados ​​en sus definiciones o en su funcionalidad.
  • Funciones de Fecha y hora.
  • Funciones de Sistema.
  • Funciones con cadenas de Caracteres (String).
  • Funciones Adicionales.
Funciones de Fecha y hora (Pueden encontrar más información AQUI).
Las 3 nuevas funciones que se incorporan a SQL Server 2008 son SYSDATETIME, SYSDATETIMEOFFSET y SYSUTCDATETIME para recuperar la hora actual del sistema del servidor,una precisión de 100 nanosegundos
image
SQL Server 2008 R2 obtiene los valores de fecha y hora utilizando la API de Windows GetSystemTimeAsFileTime(). La exactitud depende del hardware del equipo y de la versión de Windows en las que la instancia de SQL Server se esté ejecutando. La precisión de esta API se fija en 100 nanosegundos. La precisión se puede determinar mediante la API de Windows GetSystemTimeAdjustment().
Si no necesitas la precisión de estas funciones, puedes utilizar GETDATE, CURRENT_TIMESTAMP y GETUTCDATE.
Aunque en las funciones GETDATE y GETUTCDATE las fechas utiliza el mismo formato de incluir paréntesis después del nombre de la función, la función CURRENT_TIMESTAMP no. El CURRENT_TIMESTAMP y funciones GETDATE producir el mismo resultados.
En la siguiente imagen se puede apreciar la menor precisión de estas funciones comparadas con las anteriores.
 image

Además de las funciones que devuelven la fecha y hora actuales, hay funciones que devuelven las partes de fecha y hora, como DATEPART y DATENAME. La función DATENAME devuelve el nombre de la parte específica, como "Enero" para el mes.Por el contrario, la función DATEPART devuelve el valor numérico de la parte específica. Por ejemplo, "1" se devuelve para enero. También hay funciones para realizar operaciones matemáticas con fechas, como DATEADD y DATEDIFF.

Las funciones DATEADD y DATEDIFF requieren una parte de la fecha por definir. Existe una variedad de palabras y símbolos pueden ser usados ​​para especificar la parte de fecha. Por ejemplo, un año se puede especificar como YEAR, YY, o AAAA. El Día se puede representar como DAY o DD, y así sucesivamente. La siguiente imagen muestra el resultado de varias consultas con las funciones de fecha.

image

La sintaxis de DATEDIFF es la siguiente:

DATEDIFF (datepart, startdate, enddate)
Las startdate se resta de la enddate. Por ejemplo, si el siguiente código se ha ejecutado el 26 de noviembre de 2011, el resultado de la primera consulta sería -10, lo que supone los 10 años que hay entre las fechas de inicio y fin previstas. El resultado de la segunda consulta sería de –329 días. Mediante la inversión de las fechas de inicio y fin en cada consulta, los valores positivos se devuelven en el conjunto de resultados:

image


Funciones de Sistema (Pueden encontrar más información AQUI).


Además de la fecha y hora, hay funciones de sistema que permiten manipular el formato de los datos de uso común. Las funciones CAST y CONVERT se utiliza para convertir una expresión de un tipo de datos a otro. La declaración CONVERT también se puede utilizar para dar formato a una fecha. La siguiente imagen muestra una serie de conversiones de la fecha.

Es importante, especialmente en una organización internacional, entender cómo los usuarios interpreten fechas. Por ejemplo, en los Estados Unidos, la mayoría de los usuarios que interpretará la fecha "05/01/07", en enero 5 de 2007, mientras que en Francia, los usuarios podrían interpretar como 01 de mayo 2007, y en Japón, los usuarios podrían interpretar como 07 de mayo 2001.Si no especifica un formato de fecha específica, el formato depende de una versión local de SQL Server está instalado. Cuando una versión local está instalado, el formato es determinado por el idioma por defecto configurada en el equipo que ejecuta SQL Server.

image

Las funciones adicionales del sistema son beneficiosas en la programación y resolución de problemas.
La función @@ERROR devuelve el número de error más reciente en la sesión actual, mientras que @@TRANCOUNT devuelve el número de transacciones activas en el actual período de sesiones.
Estas funciones se conocen como variables globales en las primeras versiones de SQL Server. A diferencia de muchos de los ejemplos anteriores, la sintaxis de estos comandos no incluye entre paréntesis.
La declaración de @@ERROR debe ser ejecutado inmediatamente después del comando que ha provocado el error.

Funciones de cadenas de caracteres (o String) (Pueden encontrar más información AQUI).


Las funciones de cadena realizar una operación en las expresiones de cadena. A continuación se enumeran algunas de las funciones de cadena más comunes:
  • LEFT, RIGHT: Devuelve el número especificado de caracteres desde el lado especificado (izquierda o derecha) de la expresión.
  • UPPER, LOWER: Retorna en mayúsculas o minúsculas (uppercase o lowercase) para todos los caracteres de la expresión.
  • SUBSTRING: recibe una expresión como entrada y devuelve un número determinado de caracteres después de un punto de partida. Por ejemplo, SUBSTRING (FirstName, 1,3) se inicia en el primer carácter del valor en la columna FirstName y devuelve los siguientes tres caracteres.
  • REPLACE: Sustituye una cadena con otra dentro de una cadena definida.
  • LEN: Devuelve el número de caracteres de una cadena definida. Si desea que el número de bytes en lugar de caracteres, debe utilizar la función DATALENGTH.


Funciones adicionales (Pueden encontrar más información AQUI).


Las siguientes funciones son también comúnmente requeridas:
  • DATALENGTH: Devuelve el número de bytes necesarios para representar una expresión.
  • Se puede utilizar con cualquier tipo de datos, pero es especialmente útil con varchar, y nvarchar, binary y tipos de datos de imágenes.
  • PATINDEX. Devuelve la posición inicial de la primera aparición de un patrón específico dentro de una cadena definida.
  • CHARINDEX: Devuelve la posición inicial, si se encuentra, de una cadena definida dentro de otra cadena definida. La función también acepta una entrada opcional destart_location, que define el punto en la segunda expresión en la que las comparaciones deben comenzar.
Resumen de la lección

  • Utilice las funciones de proporcionar conjuntos de resultados más significativos.
  • Utilizar las funciones de fecha y hora de manipular y devolver la información actualizada.
  • Use las funciones de cadenas para formatear o devolver información acerca de las expresiones de cadena.

1 comentario: