Funciones escalares de ODBC (Transact-SQL)ODBC Scalar Functions (Transact-SQL)

SE APLICA A: síSQL Server (a partir de 2008) síAzure SQL Database síAzure SQL Data Warehouse síAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Puede usar funciones escalares ODBC en instrucciones Transact-SQLTransact-SQL.You can use ODBC Scalar Functions in Transact-SQLTransact-SQL statements. SQL ServerSQL Server interpreta estas instrucciones.These statements are interpreted by SQL ServerSQL Server. Se pueden utilizar en procedimientos almacenados y funciones definidas por el usuario.They can be used in stored procedures and user-defined functions. Entre estas últimas se incluyen funciones de cadena, de número, de hora, de fecha, de intervalo y de sistema.These include string, numeric, time, date, interval, and system functions.

UsoUsage

SELECT {fn <function_name> [ (<argument>,....n) ] }

FuncionesFunctions

En las tablas siguientes se muestra una lista de las funciones escalares de ODBC que no se duplican en Transact-SQLTransact-SQL.The following tables list ODBC scalar functions that aren't duplicated in Transact-SQLTransact-SQL.

Funciones de cadenaString Functions

FunciónFunction DescripciónDescription
BIT_LENGTH( string_exp ) (ODBC 3.0)BIT_LENGTH( string_exp ) (ODBC 3.0) Devuelve la longitud en bits de la expresión de cadena.Returns the length in bits of the string expression.

Devuelve el tamaño interno del tipo de datos especificado, sin convertir a una cadena string_exp.Returns the internal size of the given data type, without converting string_exp to string.
CONCAT( string_exp1,string_exp2) (ODBC 1.0)CONCAT( string_exp1,string_exp2) (ODBC 1.0) Devuelve una cadena de caracteres que es el resultado de concatenar string_exp2 con string_exp1.Returns a character string that is the result of concatenating string_exp2 to string_exp1. La cadena resultante es dependiente de DBMS.The resulting string is DBMS-dependent. Por ejemplo, si la columna representada por string_exp1 contenía un valor NULL, DB2 devolvería NULL, pero SQL ServerSQL Server devolvería la cadena distinta de NULL.For example, if the column represented by string_exp1 contained a NULL value, DB2 would return NULL but SQL ServerSQL Server would return the non-NULL string.
OCTET_LENGTH( string_exp ) (ODBC 3.0)OCTET_LENGTH( string_exp ) (ODBC 3.0) Devuelve la longitud en bytes de la expresión de cadena.Returns the length in bytes of the string expression. El resultado es el entero más pequeño que no es inferior al número de bits dividido por 8.The result is the smallest integer not less than the number of bits divided by 8.

Devuelve el tamaño interno del tipo de datos especificado, sin convertir a una cadena string_exp.Returns the internal size of the given data type, without converting string_exp to string.

Función numéricasNumeric Function

FunciónFunction DescripciónDescription
TRUNCATE( numeric_exp, integer_exp) (ODBC 2.0)TRUNCATE( numeric_exp, integer_exp) (ODBC 2.0) Devuelve numeric_exp truncado en posiciones de integer_exp a la derecha del separador decimal.Returns numeric_exp truncated to integer_exp positions right of the decimal point. Si integer_exp es negativo, numeric_exp se trunca en posiciones de |integer_exp| a la izquierda del separador decimal.If integer_exp is negative, numeric_exp is truncated to |integer_exp| positions to the left of the decimal point.

Funciones de hora, fecha e intervaloTime, Date, and Interval Functions

FunciónFunction DescripciónDescription
CURRENT_DATE( ) (ODBC 3.0)CURRENT_DATE( ) (ODBC 3.0) Devuelve la fecha actual.Returns the current date.
CURDATE( ) (ODBC 3.0)CURDATE( ) (ODBC 3.0) Devuelve la fecha actual.Returns the current date.
CURRENT_TIME[( time-precision )] (ODBC 3.0)CURRENT_TIME[( time-precision )] (ODBC 3.0) Devuelve la hora local actual.Returns the current local time. El argumento de precisión de la hora determina la precisión en segundos del valor devueltoThe time-precision argument determines the seconds precision of the returned value
CURTIME() (ODBC 3.0)CURTIME() (ODBC 3.0) Devuelve la hora local actual.Returns the current local time.
DAYNAME( date_exp ) (ODBC 2.0)DAYNAME( date_exp ) (ODBC 2.0) Devuelve una cadena de caracteres que contiene el nombre específico del origen de datos del día para la parte del día de date_exp.Returns a character string that contains the data-source-specific name of the day for the day part of date_exp. Por ejemplo, el nombre es Sunday a Saturday o Sun.For example, the name is Sunday through Saturday or Sun. a Sat.through Sat. para un origen de datos que use el idioma inglés.for a data source that uses English. El nombre será Domingo a sábado para un origen de datos que use el idioma español.The name is Sonntag through Samstag for a data source that uses German.
DAYOFMONTH( date_exp ) (ODBC 1.0)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.Returns the day of the month, based on the month field in date_exp, as an integer. El valor devuelto se encuentra en el intervalo de 1-31.The return value is in the range of 1-31.
DAYOFWEEK( date_exp ) (ODBC 1.0)DAYOFWEEK( date_exp ) (ODBC 1.0) Devuelve el día de la semana basándose en el campo de semana de date_exp como un valor entero.Returns the day of the week based on the week field in date_exp as an integer. El valor devuelto se encuentra en el intervalo de 1-7, donde 1 representa el domingo.The return value is in the range of 1-7, where 1 represents Sunday.
HOUR( time_exp ) (ODBC 1.0)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-23.Returns the hour, based on the hour field in time_exp, as an integer value in the range of 0-23.
MINUTE( time_exp ) (ODBC 1.0)MINUTE( time_exp ) (ODBC 1.0) Devuelve los minutos basados en el campo de minutos en time_exp como un valor entero en el intervalo de 0-59.Returns the minute, based on the minute field in time_exp, as an integer value in the range of 0-59.
SECOND( time_exp ) (ODBC 1.0)SECOND( time_exp ) (ODBC 1.0) Devuelve los segundos basados en el campo de segundos en time_exp como un valor entero en el intervalo de 0-59.Returns the second, based on the second field in time_exp, as an integer value in the range of 0-59.
MONTHNAME( date_exp ) (ODBC 2.0)MONTHNAME( date_exp ) (ODBC 2.0) Devuelve una cadena de caracteres que contiene el nombre específico del origen de datos del mes para la parte del mes de date_exp.Returns a character string that contains the data-source-specific name of the month for the month part of date_exp. Por ejemplo, el nombre es January a December o Jan. a Dec. para un origen de datos que use el idioma inglés.For example, the name is January through December or Jan. through Dec. for a data source that uses English. El nombre es "Enero a diciembre" para un origen de datos que use el idioma español.The name is Januar through Dezember for a data source that uses German.
QUARTER( date_exp ) (ODBC 1.0)QUARTER( date_exp ) (ODBC 1.0) Devuelve el trimestre en date_exp como un valor entero en el intervalo de 1-4, donde 1 representa el trimestre del 1 de enero al 31 de marzo.Returns the quarter in date_exp as an integer value in the range of 1-4, where 1 represents January 1 through March 31.
WEEK( date_exp ) (ODBC 1.0)WEEK( date_exp ) (ODBC 1.0) Devuelve la semana del año basándose en el campo de semana en date_exp como un valor entero en el intervalo de 1-53.Returns the week of the year, based on the week field in date_exp, as an integer value in the range of 1-53.

EjemplosExamples

A.A. Utilizar una función ODBC en un procedimiento almacenadoUsing an ODBC function in a stored procedure

En el siguiente ejemplo se utiliza una función ODBC en un procedimiento almacenado:The following example uses an ODBC function in a stored procedure:

CREATE PROCEDURE dbo.ODBCprocedure  
    (  
    @string_exp nvarchar(4000)  
    )  
AS  
SELECT {fn OCTET_LENGTH( @string_exp )};  

b.B. Utilizar una función ODBC en una función definida por el usuarioUsing an ODBC Function in a user-defined function

El siguiente ejemplo utiliza una función ODBC en una función definida por el usuario:The following example uses an ODBC function in a user-defined function:

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.C. Utilizar funciones ODBC en instrucciones SELECTUsing an ODBC functions in SELECT statements

Las siguientes instrucciones SELECT utilizan funciones ODBC:The following SELECT statements use ODBC functions:

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 SECOND( @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  

Ejemplos: Almacenamiento de datos SQL de AzureAzure SQL Data Warehouse y Almacenamiento de datos paralelosParallel Data WarehouseExamples: Almacenamiento de datos SQL de AzureAzure SQL Data Warehouse and Almacenamiento de datos paralelosParallel Data Warehouse

D.D. Utilizar una función ODBC en un procedimiento almacenadoUsing an ODBC function in a stored procedure

En el siguiente ejemplo se utiliza una función ODBC en un procedimiento almacenado:The following example uses an ODBC function in a stored procedure:

CREATE PROCEDURE dbo.ODBCprocedure  
    (  
    @string_exp nvarchar(4000)  
    )  
AS  
SELECT {fn BIT_LENGTH( @string_exp )};  

E.E. Utilizar una función ODBC en una función definida por el usuarioUsing an ODBC Function in a user-defined function

El siguiente ejemplo utiliza una función ODBC en una función definida por el usuario:The following example uses an ODBC function in a user-defined function:

CREATE FUNCTION dbo.ODBCudf  
    (  
    @string_exp nvarchar(4000)  
    )  
RETURNS int  
AS  
BEGIN  
DECLARE @len int  
SET @len = (SELECT {fn BIT_LENGTH( @string_exp )})  
RETURN(@len)  
END ;  
  
SELECT dbo.ODBCudf('Returns the length in bits.');  
--Returns 432  
  

F.F. Utilizar funciones ODBC en instrucciones SELECTUsing an ODBC functions in SELECT statements

Las siguientes instrucciones SELECT utilizan funciones ODBC:The following SELECT statements use ODBC functions:

DECLARE @string_exp nvarchar(4000) = 'Returns the length.';  
SELECT {fn BIT_LENGTH( @string_exp )};  
-- Returns 304  
  
SELECT {fn CONCAT( 'CONCAT ','returns a character string')};  
-- Returns CONCAT returns a character string  
SELECT {fn CURRENT_DATE( )};  
-- Returns todays date  
SELECT {fn CURRENT_TIME(6)};  
-- Returns the time  
  
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 SECOND( @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  

Consulte tambiénSee Also

Funciones integradas (Transact-SQL)Built-in Functions (Transact-SQL)