Funciones escalares de ODBC (Transact-SQL)
Se aplica a: punto de conexión de SQL Server
Azure SQL Database
Azure SQL Instancia administrada
punto de conexión de SQL Analytics Analytics Platform System (PDW) de SQL Analytics
System (PDW)
de SQL Server en Microsoft Fabric
Warehouse 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