Funzioni scalari ODBC (Transact-SQL)

Si applica a:SQL Server database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics AnalyticsPlatform System (PDW)SQL analytics endpoint in Microsoft FabricWarehouse in Microsoft Fabric

È possibile usare le funzioni scalari ODBC all'interno di istruzioni Transact-SQL. Queste istruzioni sono interpretate da SQL Server. ed è possibile utilizzarle in stored procedure e funzioni definite dall'utente. Queste includono funzioni per i valori stringa, numerici, di ora, di data, di intervallo e di sistema.

Utilizzo

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

Funzioni

Nelle tabelle seguenti sono elencate le funzioni scalari ODBC non duplicate in Transact-SQL.

Funzioni di stringa

Funzione Descrizione
BIT_LENGTH(string_exp) (ODBC 3.0) Restituisce la lunghezza in bit dell'espressione stringa.

Restituisce le dimensioni interne del tipo di dati specificato, senza convertire string_exp in stringa.
CONCAT( string_exp1,string_exp2) (ODBC 1.0) Restituisce la stringa di caratteri che risulta dalla concatenazione di string_exp2 e string_exp1. La stringa risultante dipende da DBMS. Ad esempio, se la colonna rappresentata string_exp1 contiene un valore NULL, DB2 restituisce NULL ma SQL Server restituisce una stringa non Null.
OCTET_LENGTH( string_exp ) (ODBC 3.0) Restituisce la lunghezza in byte dell'espressione stringa. Il risultato è il più piccolo numero integer non inferiore al numero di bit diviso per 8.

Restituisce le dimensioni interne del tipo di dati specificato, senza convertire string_exp in stringa.

Funzione numerica

Funzione Descrizione
TRUNCATE( numeric_exp, integer_exp) (ODBC 2.0) Restituisce numeric_exp troncato in corrispondenza di un numero di posizioni pari a integer_exp a destra del separatore decimale. Se integer_exp è negativo, numeric_exp viene troncato in |integer_exp| posiziona a sinistra del separatore decimale.

Funzioni di data, ora e intervallo

Funzione Descrizione
CURRENT_DATE( ) (ODBC 3.0) Restituisce la data corrente.
CURDATE( ) (ODBC 3.0) Restituisce la data corrente.
CURRENT_TIME[( time-precision )] (ODBC 3.0) Restituisce l'ora locale corrente. L'argomento time-precision determina la precisione a livello di secondi del valore restituito.
CURTIME() (ODBC 3.0) Restituisce l'ora locale corrente.
DAYNAME( date_exp ) (ODBC 2.0) Restituisce una stringa di caratteri che contiene il nome specifico dell'origine dati del giorno per la parte del giorno di date_exp. Ad esempio, il nome è da Sunday a Saturday o da Sun a Sat per un'origine dati che usa l'inglese. Il nome è da Sonntag a Samstag per un'origine dati che usa il tedesco.
DAYOFMONTH( date_exp ) (ODBC 1.0) Restituisce il giorno del mese in base al campo del mese in date_exp come valore intero. Il valore restituito è compreso nell'intervallo da 1 a 31.
DAYOFWEEK( date_exp ) (ODBC 1.0) Restituisce il giorno della settimana in base al campo della settimana in date_exp come valore intero. Il valore restituito è compreso nell'intervallo da 1 a 7, dove 1 corrisponde a domenica.
HOUR( time_exp ) (ODBC 1.0) Restituisce l'ora in base al campo dell'ora in time_exp come valore intero nell'intervallo da 0 a 23.
MINUTE( time_exp ) (ODBC 1.0) Restituisce i minuti in base al campo dei minuti in time_exp come valore intero nell'intervallo da 0 a 59.
SECOND( time_exp ) (ODBC 1.0) Restituisce i secondi in base al campo dei secondi in time_exp come valore intero nell'intervallo da 0 a 59.
MONTHNAME( date_exp ) (ODBC 2.0) Restituisce una stringa di caratteri che contiene il nome specifico dell'origine dati del mese per la parte del mese di date_exp. Ad esempio, il nome è da January a December o da Jan a Dec per un'origine dati che usa l'inglese. Il nome è da Januar a Dezember per un'origine dati che usa il tedesco.
QUARTER( date_exp ) (ODBC 1.0) Restituisce il trimestre in date_exp come valore intero nell'intervallo da 1 a 4, dove 1 rappresenta il periodo dal 1º gennaio al 31 marzo.
WEEK( date_exp ) (ODBC 1.0) Restituisce la settimana dell'anno in base al campo della settimana in date_exp come valore intero nell'intervallo da 1 a 53.

Esempi

R. Utilizzo di una funzione ODBC in una stored procedure

Nell'esempio seguente viene utilizzata una funzione ODBC in una stored procedure:

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

B. Utilizzo di una funzione ODBC in una funzione definita dall'utente

Nell'esempio seguente viene utilizzata una funzione ODBC in una funzione definita dall'utente:

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 supporta le funzioni scalari ODBC, ma attualmente non supporta funzioni definite dall'utente che restituiscono valori, come illustrato nell'esempio B.

C. Utilizzo di funzioni ODBC nelle istruzioni SELECT

Nella seguente istruzione SELECT vengono utilizzate funzioni 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  

Esempi: Azure Synapse Analytics e Piattaforma di strumenti analitici (PDW)

D. Utilizzo di una funzione ODBC in una stored procedure

Nell'esempio seguente viene utilizzata una funzione ODBC in una stored procedure:

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

E. Utilizzo di una funzione ODBC in una funzione definita dall'utente

Nell'esempio seguente viene utilizzata una funzione ODBC in una funzione definita dall'utente:

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. Utilizzo di funzioni ODBC nelle istruzioni SELECT

Nella seguente istruzione SELECT vengono utilizzate funzioni 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  

Vedi anche

Funzioni predefinite (Transact-SQL)