ODBC-Skalarfunktionen (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-Endpunkt in Microsoft FabricWarehouse in Microsoft Fabric

Sie können ODBC-Skalarfunktionen in Transact-SQL-Anweisungen verwenden. Diese Anweisungen werden von SQL Server interpretiert. Sie können in gespeicherten Prozeduren und benutzerdefinierten Funktionen verwendet werden. Hierzu zählen Zeichenfolgen-, Uhrzeit-, Datums-, Intervall- und Systemfunktionen sowie numerische Funktionen.

Verbrauch

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

Functions

In den folgenden Tabellen werden ODBC-Skalarfunktionen aufgelistet, die nicht in Transact-SQL dupliziert werden.

Zeichenfolgenfunktionen

Funktion BESCHREIBUNG
BIT_LENGTH( string_exp ) (ODBC 3.0) Gibt die Länge des Zeichenfolgenausdrucks in Bits zurück.

Gibt die interne Größe des angegebenen Datentyps zurück, ohne „string_exp“ in „string“ zu konvertieren.
CONCAT( string_exp1,string_exp2) (ODBC 1.0) Gibt eine Zeichenfolge zurück, die das Ergebnis der Verkettung von string_exp2 und string_exp1 darstellt. Die Ergebniszeichenfolge hängt vom DBMS ab. Wenn die durch string_exp1 dargestellte Spalte z. B. einen NULL-Wert enthält, wird DB2 NULL zurückgeben. SQL Server hingegen gibt eine Zeichenfolge ungleich NULL zurückgeben.
OCTET_LENGTH( string_exp ) (ODBC 3.0) Gibt die Länge des Zeichenfolgenausdrucks in Bytes zurück. Das Ergebnis ist die kleinste ganze Zahl, die nicht kleiner ist als die Anzahl der Bits dividiert durch 8.

Gibt die interne Größe des angegebenen Datentyps zurück, ohne „string_exp“ in „string“ zu konvertieren.

Numerische Funktion

Funktion BESCHREIBUNG
TRUNCATE( numeric_exp, integer_exp) (ODBC 2.0) Gibt numeric_exp abgeschnitten auf integer_exp-Positionen rechts vom Dezimaltrennzeichen zurück. Wenn integer_exp negativ ist, wird numeric_exp auf die |integer_exp|-Positionen links vom Dezimaltrennzeichen abgeschnitten.

Uhrzeit-, Datums- und Intervallfunktionen

Funktion BESCHREIBUNG
CURRENT_DATE( ) (ODBC 3.0) Gibt das aktuelle Datum zurück.
CURDATE( ) (ODBC 3.0) Gibt das aktuelle Datum zurück.
CURRENT_TIME[( time-precision )] (ODBC 3.0) Gibt die aktuelle lokale Zeit zurück. Das time-precision-Argument bestimmt die Genauigkeit des zurückgegebenen Werts bezüglich der Sekundenangaben.
CURTIME() (ODBC 3.0) Gibt die aktuelle lokale Zeit zurück.
DAYNAME( date_exp ) (ODBC 2.0) Gibt eine Zeichenfolge zurück, die den für die Datenquelle spezifischen Namen des Tages aus „date_exp“ enthält. Der Name entspricht beispielsweise „Sunday through Saturday“ oder „Sun. bis Sa. für eine Datenquelle, die Englisch als Sprache verwendet. Für eine Datenquelle, die Deutsch als Sprache verwendet, entspricht der Name beispielsweise „Sonntag through Samstag“.
DAYOFMONTH( date_exp ) (ODBC 1.0) Gibt den Tag des Monats basierend auf dem Monatsfeld in „date_exp“ als ganze Zahl zurück. Der Rückgabewert liegt im Bereich zwischen 1 und 31.
DAYOFWEEK( date_exp ) (ODBC 1.0) Gibt den Tag der Woche basierend auf dem Wochenfeld in „date_exp“ als ganze Zahl zurück. Der Rückgabewert liegt im Bereich zwischen 1 und 7, wobei 1 für den Sonntag steht.
HOUR( time_exp ) (ODBC 1.0) Gibt die Stunde basierend auf dem Stundenfeld in „time_exp“ als ganze Zahl im Bereich zwischen 0 und 23 zurück.
MINUTE( time_exp ) (ODBC 1.0) Gibt die Minute basierend auf dem Minutenfeld in „time_exp“ als ganze Zahl im Bereich zwischen 0 und 59 zurück.
SECOND( time_exp ) (ODBC 1.0) Gibt die Sekunde basierend auf dem Sekundenfeld in „time_exp“ als ganze Zahl im Bereich zwischen 0 und 59 zurück.
MONTHNAME( date_exp ) (ODBC 2.0) Gibt eine Zeichenfolge zurück, die den für die Datenquelle spezifischen Namen des Monats aus „date_exp“ enthält. Der Name entspricht beispielsweise „January through December“ oder „Jan. through Dec.“ für eine Datenquelle, die Englisch als Sprache verwendet. Für eine Datenquelle, die Deutsch als Sprache verwendet, entspricht der Name beispielsweise „Januar through Dezember“.
QUARTER( date_exp ) (ODBC 1.0) Gibt das Quartal in date_exp als ganze Zahl im Bereich von 1 bis 4 zurück, wobei 1 den Zeitraum vom 1. Januar bis 31. März darstellt.
WEEK( date_exp ) (ODBC 1.0) Gibt die Kalenderwoche des Jahres basierend auf dem Wochenfeld in „date_exp“ als ganze Zahl im Bereich zwischen 1 und 53 zurück.

Beispiele

A. Verwenden einer ODBC-Funktion in einer gespeicherten Prozedur

Im folgenden Beispiel wird eine ODBC-Funktion in einer gespeicherten Prozedur verwendet:

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

B. Verwenden einer ODBC-Funktion in einer benutzerdefinierten Funktion

Im folgenden Beispiel wird eine ODBC-Funktion in einer benutzerdefinierten Funktion verwendet:

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  

Hinweis

Microsoft Fabric unterstützt ODBC-Skalarfunktionen, aber derzeit keine benutzerdefinierten Funktionen, die Werte zurückgeben, wie in Beispiel B gezeigt.

C. Verwenden von ODBC-Funktionen in SELECT-Anweisungen

In den folgenden SELECT-Anweisungen werden ODBC-Funktionen verwendet:

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  

Beispiele: Azure Synapse Analytics und Analytics-Plattformsystem (PDW)

D: Verwenden einer ODBC-Funktion in einer gespeicherten Prozedur

Im folgenden Beispiel wird eine ODBC-Funktion in einer gespeicherten Prozedur verwendet:

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

E. Verwenden einer ODBC-Funktion in einer benutzerdefinierten Funktion

Im folgenden Beispiel wird eine ODBC-Funktion in einer benutzerdefinierten Funktion verwendet:

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. Verwenden von ODBC-Funktionen in SELECT-Anweisungen

In den folgenden SELECT-Anweisungen werden ODBC-Funktionen verwendet:

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  

Weitere Informationen

Integrierte Funktionen (Transact-SQL)