ODBC-Skalarfunktionen (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL verwaltete Instanz Azure Synapse Analytics Platform System (PDW) SQL Analytics Platform-Endpunkt in Microsoft Fabric Warehouse in Microsoft Fabric Warehouse
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