Funzioni scalari ODBC (Transact-SQL)
Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure endpoint di analisi SQL di Azure Synapse Analytics Platform System (PDW) in Microsoft Fabric Warehouse 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 per i valori 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