Funciones escalares de ODBC (Transact-SQL)
Puede utilizar las Funciones escalares de ODBC en las instrucciones Transact-SQL. SQL Server interpreta estas instrucciones. Se pueden utilizar en procedimientos almacenados y funciones definidas por el usuario. Entre estas últimas se incluyen funciones de cadena, de número, de hora, de fecha, de intervalo y de sistema.
Se aplica a: SQL Server (desde SQL Server 2008 hasta la versión actual), Windows Azure SQL Database (desde la versión inicial hasta la versión actual). |
Uso
SELECT {fn <function_name> [ (<argument>,.... n) ] }
Funciones
Las tablas siguientes enumeran las funciones escalares de ODBC que no se duplican en Transact-SQL.
Funciones de cadena
Función |
Descripción |
---|---|
BIT_LENGTH( string_exp ) (ODBC 3.0) |
Devuelve la longitud en bits de la expresión de cadena. No funciona únicamente para los tipos de datos de cadena. Por consiguiente, no convertirá implícitamente string_exp en una cadena sino que, en su lugar, devolverá el tamaño (interno) del tipo de datos que se proporcione. |
CONCAT( string_exp1,string_exp2) (ODBC 1.0) |
Devuelve una cadena de caracteres que es el resultado de concatenar string_exp2 con string_exp1. La cadena resultante es dependiente de DBMS. Por ejemplo, si la columna representada por string_exp1 contenía un valor NULL, DB2 devolvería NULL, pero SQL Server devolvería la cadena distinta de NULL. |
OCTET_LENGTH( string_exp ) (ODBC 3.0) |
Devuelve la longitud en bytes de la expresión de cadena. El resultado es el entero más pequeño que no es inferior al número de bits dividido por 8. No funciona únicamente para los tipos de datos de cadena. Por consiguiente, no convertirá implícitamente string_exp en una cadena sino que, en su lugar, devolverá el tamaño (interno) del tipo de datos que se proporcione. |
Función numéricas
Función |
Descripción |
---|---|
TRUNCATE( numeric_exp, integer_exp) (ODBC 2.0) |
Devuelve numeric_exp truncado en posiciones de integer_exp a la derecha del separador decimal. Si integer_exp es negativo, numeric_exp se trunca en posiciones de |integer_exp| a la izquierda del separador decimal. |
Funciones de hora, fecha e intervalo
Función |
Descripción |
---|---|
CURRENT_DATE( ) (ODBC 3.0) |
Devuelve la fecha actual. |
CURRENT_TIME [(precisión de la hora)] (ODBC 3.0) |
Devuelve la hora local actual. El argumento de precisión de la hora determina la precisión en segundos del valor devuelto |
DAYNAME( date_exp ) (ODBC 2.0) |
Devuelve una cadena de caracteres que contiene el nombre específico del origen de datos del día (por ejemplo, Sunday a Saturday o Sun. a Sat. para un origen de datos que utiliza inglés, o bien Sonntag a Samstag para un origen de datos que utiliza alemán) para la parte del día de date_exp. |
DAYOFMONTH( date_exp ) (ODBC 1.0) |
Devuelve el día del mes basado en el campo de mes en date_exp como un valor entero en el intervalo de 1 a 31. |
DAYOFWEEK( date_exp ) (ODBC 1.0) |
Devuelve el día de la semana basado en el campo de semana en date_exp como un valor entero en el intervalo de 1 a 7, donde 1 representa el domingo. |
HOUR( time_exp ) (ODBC 1.0) |
Devuelve la hora basada en el campo de hora en time_exp como un valor entero en el intervalo de 0 a 23. |
MINUTE( time_exp ) (ODBC 1.0) |
Devuelve los minutos basados en el campo de miuntos en time_exp como un valor entero en el intervalo de 0 a 59. |
MONTHNAME( date_exp ) (ODBC 2.0) |
Devuelve una cadena de caracteres que contiene el nombre específico del origen de datos del mes (por ejemplo, January a December o Jan. a Dec. para un origen de datos que utiliza inglés, o bien Januar a Dezember para un origen de datos que utiliza alemán) para la parte del mes de date_exp. |
QUARTER( date_exp ) (ODBC 1.0) |
Devuelve el trimestre en date_exp como un valor entero en el intervalo de 1 a 4, donde 1 representa el trimestre del 1 de enero al 31 de marzo. |
WEEK( date_exp ) (ODBC 1.0) |
Devuelve la semana del año basado en el campo de semana en date_exp como un valor entero en el intervalo de 1 a 53. |
Ejemplos
A.Utilizar una función ODBC en un procedimiento almacenado
En el siguiente ejemplo se utiliza una función ODBC en un procedimiento almacenado:
CREATE PROCEDURE dbo.ODBCprocedure
(
@string_exp nvarchar(4000)
)
AS
SELECT {fn OCTET_LENGTH( @string_exp )};
B.Utilizar una función ODBC en una función definida por el usuario
El siguiente ejemplo utiliza una función ODBC en una función definida por el usuario:
CREATE FUNCTION dbo.ODBCudf
(
@string_exp nvarchar(4000)
)
RETURNS int
AS
BEGIN
DECLARE @len int
SET @len = (SELECT {fn OCTET_LENGTH( @string_exp )})
RETURN(@len)
END ;
SELECT dbo.ODBCudf('Returns the length.');
--Returns 38
C.Utilizar funciones ODBC en instrucciones SELECT
Las siguientes instrucciones SELECT utilizan funciones ODBC:
DECLARE @string_exp nvarchar(4000) = 'Returns the length.';
SELECT {fn BIT_LENGTH( @string_exp )};
-- Returns 304
SELECT {fn OCTET_LENGTH( @string_exp )};
-- Returns 38
SELECT {fn CONCAT( 'CONCAT ','returns a character string')};
-- Returns CONCAT returns a character string
SELECT {fn TRUNCATE( 100.123456, 4)};
-- Returns 100.123400
SELECT {fn CURRENT_DATE( )};
-- Returns 2007-04-20
SELECT {fn CURRENT_TIME(6)};
-- Returns 10:27:11.973000
DECLARE @date_exp nvarchar(30) = '2007-04-21 01:01:01.1234567';
SELECT {fn DAYNAME( @date_exp )};
-- Returns Saturday
SELECT {fn DAYOFMONTH( @date_exp )};
-- Returns 21
SELECT {fn DAYOFWEEK( @date_exp )};
-- Returns 7
SELECT {fn HOUR( @date_exp)};
-- Returns 1
SELECT {fn MINUTE( @date_exp )};
-- Returns 1
SELECT {fn MONTHNAME( @date_exp )};
-- Returns April
SELECT {fn QUARTER( @date_exp )};
-- Returns 2
SELECT {fn WEEK( @date_exp )};
-- Returns 16