Fonctions scalaires ODBC (Transact-SQL)
Vous pouvez utiliser les fonctions scalaires ODBC dans les instructions Transact-SQL. Ces instructions sont interprétées par SQL Server. Elles peuvent être utilisées dans les procédures stockées et les fonctions définies par l'utilisateur. Celles-ci incluent les fonctions de chaîne, numériques, d'heure, de date, d'intervalle et système.
Utilisation
SELECT {fn <function_name> [ (<argument>,....n) ] }
Fonctions
Les tableaux suivants répertorient les fonctions scalaires ODBC qui ne sont pas dupliquées dans Transact-SQL.
Fonctions de chaîne
Fonction |
Description |
---|---|
BIT_LENGTH( string_exp ) (ODBC 3.0) |
Retourne la longueur en bits de l'expression de chaîne. Ne fonctionne pas uniquement pour les types de données string. Par conséquent, ne convertira pas implicitement string_exp en chaîne mais retournera à la place la taille (interne) de tout type de données qu'elle reçoit. |
CONCAT( string_exp1,string_exp2) (ODBC 1.0) |
Retourne une chaîne de caractères qui est le résultat de la concaténation de string_exp2 à string_exp1. La chaîne résultante dépend de SGBD. Par exemple, si la colonne représentée par string_exp1 contenait une valeur NULL, DB2 retournerait NULL, mais SQL Server retournerait la chaîne non NULL. |
OCTET_LENGTH( string_exp ) (ODBC 3.0) |
Retourne la longueur en octets de l'expression de chaîne. Le résultat est le plus petit entier qui n'est pas inférieur au nombre de bits divisé par 8. Ne fonctionne pas uniquement pour les types de données string. Par conséquent, ne convertira pas implicitement string_exp en chaîne mais retournera à la place la taille (interne) de tout type de données qu'elle reçoit. |
Fonction numérique
Fonction |
Description |
---|---|
TRUNCATE( numeric_exp, integer_exp) (ODBC 2.0) |
Retourne les positions numeric_exp tronquées en integer_exp à droite de la virgule décimale. Si integer_exp est négatif, les positions numeric_exp sont tronquées en |integer_exp| à gauche de la virgule décimale. |
Fonctions d'heure, de date et d'intervalle
Fonction |
Description |
---|---|
CURRENT_DATE( ) (ODBC 3.0) |
Retourne la date actuelle. |
CURRENT_TIME[( time-precision )] (ODBC 3.0) |
Retourne l'heure locale actuelle. L'argument time-precision détermine la précision en secondes de la valeur retournée |
DAYNAME( date_exp ) (ODBC 2.0) |
Retourne une chaîne de caractères qui contient le nom spécifique à la source de données du jour (par exemple, dimanche à samedi ou dim à sam pour une source de données qui utilise le français, ou Sonntag à Samstag pour une source de données qui utilise l'allemand) pour la partie jour de date_exp. |
DAYOFMONTH( date_exp ) (ODBC 1.0) |
Retourne le jour du mois basé sur le champ mois dans date_exp comme une valeur entière dans la plage 1 à 31. |
DAYOFWEEK( date_exp ) (ODBC 1.0) |
Retourne le jour de la semaine basé sur le champ semaine dans date_exp comme une valeur entière dans la plage 1 à 7, où 1 représente dimanche. |
HOUR( time_exp ) (ODBC 1.0) |
Retourne l'heure basée sur le champ heure dans time_exp comme une valeur entière dans la plage 0 à 23. |
MINUTE( time_exp ) (ODBC 1.0) |
Retourne la minute basée sur le champ minute dans time_exp comme une valeur entière dans la plage 0 à 59. |
MONTHNAME( date_exp ) (ODBC 2.0) |
Retourne une chaîne de caractères qui contient le nom spécifique à la source de données du mois (par exemple, janvier à décembre ou jan à déc pour une source de données qui utilise le français, ou Januar à Dezember pour une source de données qui utilise l'allemand) pour la partie mois de date_exp. |
QUARTER( date_exp ) (ODBC 1.0) |
Retourne le trimestre dans date_exp comme une valeur entière dans la plage 1 à 4, où 1 représente la période du 1er janvier au 31 mars. |
WEEK( date_exp ) (ODBC 1.0) |
Retourne la semaine de l'année basée sur le champ semaine dans date_exp comme une valeur entière dans la plage 1 à 53. |
Exemples
A. Utilisation d'une fonction ODBC dans une procédure stockée
L'exemple ci-dessous utilise une fonction ODBC dans une procédure stockée.
CREATE PROCEDURE dbo.ODBCprocedure
(
@string_exp nvarchar(4000)
)
AS
SELECT {fn OCTET_LENGTH( @string_exp )};
B. Utilisation d'une fonction ODBC dans une fonction définie par l'utilisateur
L'exemple ci-dessous utilise une fonction ODBC dans une fonction définie par l'utilisateur :
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 ;
SELECT dbo.ODBCudf('Returns the length.');
--Returns 38
C. Utilisation de fonctions ODBC dans des instructions SELECT
Les instructions SELECT suivantes utilisent des fonctions 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 MONTHNAME( @date_exp )};
-- Returns April
SELECT {fn QUARTER( @date_exp )};
-- Returns 2
SELECT {fn WEEK( @date_exp )};
-- Returns 16