Funciones escalares de ODBC (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punto de conexión de análisis SQL en Microsoft FabricAlmacenamiento en Microsoft Fabric

Puede usar funciones escalares ODBC en 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.

Uso

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

Functions

En las tablas siguientes se muestra una lista de 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.

Devuelve el tamaño interno del tipo de datos especificado, sin convertir a una cadena string_exp.
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.

Devuelve el tamaño interno del tipo de datos especificado, sin convertir a una cadena string_exp.

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.
CURDATE( ) (ODBC 3.0) Devuelve la fecha actual.
CURRENT_TIME[( time-precision )] (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
CURTIME() (ODBC 3.0) Devuelve la hora local actual.
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. Por ejemplo, el nombre es Sunday a Saturday o Sun. a Sat. para un origen de datos que use el idioma inglés. El nombre será Domingo a sábado para un origen de datos que use el idioma español.
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. El valor devuelto se encuentra en el intervalo de 1-31.
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. El valor devuelto se encuentra en el intervalo de 1-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-23.
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.
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.
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. Por ejemplo, el nombre es January a December o Jan. a Dec. para un origen de datos que use el idioma inglés. El nombre es "Enero a diciembre" para un origen de datos que use el idioma español.
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.
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.

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 ;  
GO
SELECT dbo.ODBCudf('Returns the length.');  
--Returns 38  

Nota:

Microsoft Fabric admite funciones escalares de ODBC, pero actualmente no admite funciones definidas por el usuario que devuelven valores, como se muestra en el ejemplo B.

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 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: Azure Synapse Analytics y Sistema de la plataforma de análisis (PDW)

D. 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 BIT_LENGTH( @string_exp )};  

E. 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 BIT_LENGTH( @string_exp )})  
RETURN(@len)  
END ;  
GO
SELECT dbo.ODBCudf('Returns the length in bits.');  
--Returns 432  

F. 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 CONCAT( 'CONCAT ','returns a character string')};  
-- Returns CONCAT returns a character string  
SELECT {fn CURRENT_DATE( )};  
-- Returns today's 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én

Funciones integradas (Transact-SQL)