SQL
Fonctions (Scalar / Single Row)
Recherche…
Introduction
SQL fournit plusieurs fonctions scalaires intégrées. Chaque fonction scalaire prend une valeur en entrée et renvoie une valeur en sortie pour chaque ligne d'un jeu de résultats.
Vous utilisez des fonctions scalaires partout où une expression est autorisée dans une instruction T-SQL.
Syntaxe
- CAST (expression AS data_type [(length)])
- CONVERT (type_données [(longueur)], expression [, style])
- PARSE (string_value AS data_type [culture USING])
- DATENAME (datepart, date)
- AVOIR UN RENDEZ-VOUS ( )
- DATEDIFF (datepart, date de début, date de fin)
- DATEADD (datepart, numéro, date)
- CHOISIR (index, val_1, val_2 [, val_n])
- IIF (expression_booléenne, valeur_ true, valeur_file)
- SIGN (expression_numérique)
- POWER (expression_flottant, y)
Remarques
Les fonctions scalaires ou à une seule ligne permettent d’exploiter chaque ligne de données du jeu de résultats, par opposition aux fonctions d’agrégation qui opèrent sur l’ensemble de résultats complet.
Il existe dix types de fonctions scalaires.
- Les fonctions de configuration fournissent des informations sur la configuration de l'instance SQL en cours.
- Les fonctions de conversion convertissent les données dans le type de données approprié pour une opération donnée. Par exemple, ces types de fonctions peuvent reformater les informations en convertissant une chaîne en date ou en nombre pour permettre la comparaison de deux types différents.
- Les fonctions de date et d'heure manipulent des champs contenant des valeurs de date et d'heure. Ils peuvent renvoyer des valeurs numériques, de date ou de chaîne. Par exemple, vous pouvez utiliser une fonction pour récupérer le jour actuel de la semaine ou de l'année ou pour ne récupérer que l'année de la date.
Les valeurs renvoyées par les fonctions de date et d'heure dépendent de la date et de l'heure définies pour le système d'exploitation de l'ordinateur exécutant l'instance SQL.
- Fonction logique qui effectue des opérations à l'aide d'opérateurs logiques. Il évalue un ensemble de conditions et renvoie un seul résultat.
- Les fonctions mathématiques effectuent des opérations mathématiques ou des calculs sur des expressions numériques. Ce type de fonction renvoie une valeur numérique unique.
- Les fonctions de métadonnées récupèrent des informations sur une base de données spécifiée, telles que son nom et ses objets de base de données.
- Les fonctions de sécurité fournissent des informations que vous pouvez utiliser pour gérer la sécurité d'une base de données, telles que des informations sur les utilisateurs et les rôles de la base de données.
- Les fonctions de chaîne effectuent des opérations sur les valeurs de chaîne et renvoient des valeurs numériques ou de chaîne.
À l'aide des fonctions de chaîne, vous pouvez, par exemple, combiner des données, extraire une sous-chaîne, comparer des chaînes ou convertir une chaîne en caractères majuscules ou minuscules.
- Les fonctions système effectuent des opérations et renvoient des informations sur les valeurs, les objets et les paramètres de l'instance SQL en cours.
- Les fonctions statistiques du système fournissent diverses statistiques sur l'instance SQL en cours, par exemple pour que vous puissiez surveiller les niveaux de performances actuels du système.
Modifications de personnage
Les fonctions de modification des caractères incluent la conversion de caractères en majuscules ou en minuscules, la conversion de nombres en nombres formatés, la manipulation de caractères, etc.
La fonction lower(char)
convertit le paramètre de caractère donné en caractères minuscules.
SELECT customer_id, lower(customer_last_name) FROM customer;
retournerait le nom de famille du client changé de "SMITH" à "smith".
Date et l'heure
Dans SQL, vous utilisez des types de données de date et heure pour stocker les informations de calendrier. Ces types de données incluent l'heure, la date, smalldatetime, datetime, datetime2 et datetimeoffset. Chaque type de données a un format spécifique.
Type de données | Format |
---|---|
temps | hh: mm: ss [.nnnnnnn] |
rendez-vous amoureux | AAAA-MM-JJ |
petit temps | AAAA-MM-JJ hh: mm: ss |
datetime | AAAA-MM-JJ hh: mm: ss [.nnn] |
datetime2 | AAAA-MM-JJ hh: mm: ss [.nnnnnnn] |
datetimeoffset | AAAA-MM-JJ hh: mm: ss [.nnnnnnn] [+/-] hh: mm |
La fonction DATENAME
renvoie le nom ou la valeur d'une partie spécifique de la date.
SELECT DATENAME (weekday,'2017-01-14') as Datename
Nom de données |
---|
samedi |
Vous utilisez la fonction GETDATE
pour déterminer la date et l'heure actuelles de l'ordinateur exécutant l'instance SQL en cours. Cette fonction n'inclut pas la différence de fuseau horaire.
SELECT GETDATE() as Systemdate
Date du système |
---|
2017-01-14 11: 11: 47.7230728 |
La fonction DATEDIFF
renvoie la différence entre deux dates.
Dans la syntaxe, datepart est le paramètre qui spécifie la partie de la date que vous souhaitez utiliser pour calculer la différence. La date peut être l'année, le mois, la semaine, le jour, l'heure, la minute, la seconde ou la milliseconde. Vous spécifiez ensuite la date de début dans le paramètre startdate et la date de fin dans le paramètre enddate pour lequel vous souhaitez trouver la différence.
SELECT SalesOrderID, DATEDIFF(day, OrderDate, ShipDate)
AS 'Processing time'
FROM Sales.SalesOrderHeader
SalesOrderID | Temps de traitement |
---|---|
43659 | 7 |
43660 | 7 |
43661 | 7 |
43662 | 7 |
La fonction DATEADD
vous permet d'ajouter un intervalle à une partie d'une date spécifique.
SELECT DATEADD (day, 20, '2017-01-14') AS Added20MoreDays
Ajouté20MoisDays |
---|
2017-02-03 00: 00: 00.000 |
Fonction de configuration et de conversion
Un exemple de fonction de configuration dans SQL est la fonction @@SERVERNAME
. Cette fonction fournit le nom du serveur local exécutant SQL.
SELECT @@SERVERNAME AS 'Server'
Serveur |
---|
SQL064 |
En SQL, la plupart des conversions de données ont lieu implicitement, sans intervention de l'utilisateur.
Pour effectuer des conversions qui ne peuvent être exécutées implicitement, vous pouvez utiliser les fonctions CAST
ou CONVERT
.
La syntaxe de la fonction CAST
est plus simple que la syntaxe de la fonction CONVERT
, mais elle est limitée dans ce qu’elle peut faire.
Ici, nous utilisons les fonctions CAST
et CONVERT
pour convertir le type de données datetime en type de données varchar
.
La fonction CAST
utilise toujours le paramètre de style par défaut. Par exemple, il représentera les dates et les heures en utilisant le format AAAA-MM-JJ.
La fonction CONVERT
utilise le style de date et d'heure que vous spécifiez. Dans ce cas, 3 spécifie le format de date jj / mm / aa.
USE AdventureWorks2012
GO
SELECT FirstName + ' ' + LastName + ' was hired on ' +
CAST(HireDate AS varchar(20)) AS 'Cast',
FirstName + ' ' + LastName + ' was hired on ' +
CONVERT(varchar, HireDate, 3) AS 'Convert'
FROM Person.Person AS p
JOIN HumanResources.Employee AS e
ON p.BusinessEntityID = e.BusinessEntityID
GO
Jeter | Convertir |
---|---|
David Hamiltion a été embauché le 2003-02-04 | David Hamiltion a été embauché le 04/02/03 |
Un autre exemple de fonction de conversion est la fonction PARSE
. Cette fonction convertit une chaîne en un type de données spécifié.
Dans la syntaxe de la fonction, vous spécifiez la chaîne à convertir, le mot-clé AS
, puis le type de données requis. Vous pouvez également spécifier la culture dans laquelle la valeur de chaîne doit être formatée. Si vous ne le spécifiez pas, la langue de la session est utilisée.
Si la valeur de la chaîne ne peut pas être convertie en format numérique, date ou heure, cela entraînera une erreur. Vous devrez ensuite utiliser CAST
ou CONVERT
pour la conversion.
SELECT PARSE('Monday, 13 August 2012' AS datetime2 USING 'en-US') AS 'Date in English'
Date en anglais |
---|
2012-08-13 00: 00: 00.0000000 |
Fonction logique et mathématique
SQL a deux fonctions logiques: CHOOSE
et IIF
.
La fonction CHOOSE
renvoie un élément d'une liste de valeurs, en fonction de sa position dans la liste. Cette position est spécifiée par l'index.
Dans la syntaxe, le paramètre index spécifie l'élément et est un nombre entier ou un entier. Le paramètre val_1… val_n identifie la liste de valeurs.
SELECT CHOOSE(2, 'Human Resources', 'Sales', 'Admin', 'Marketing' ) AS Result;
Résultat |
---|
Ventes |
Dans cet exemple, vous utilisez la fonction CHOOSE
pour renvoyer la deuxième entrée dans une liste de départements.
La fonction IIF
renvoie l'une des deux valeurs, en fonction d'une condition particulière. Si la condition est vraie, elle retournera la valeur vraie. Sinon, il retournera une valeur fausse.
Dans la syntaxe, le paramètre boolean_expression spécifie l'expression booléenne. Le paramètre true_value spécifie la valeur à renvoyer si la valeur boolean_expression est définie sur true et que le paramètre false_value spécifie la valeur à renvoyer si la valeur boolean_expression est définie sur false.
SELECT BusinessEntityID, SalesYTD,
IIF(SalesYTD > 200000, 'Bonus', 'No Bonus') AS 'Bonus?'
FROM Sales.SalesPerson
GO
BusinessEntityID | SalesYTD | Prime? |
---|---|---|
274 | 559697.5639 | Prime |
275 | 3763178.1787 | Prime |
285 | 172524.4512 | Pas de bonus |
Dans cet exemple, vous utilisez la fonction IIF pour renvoyer l'une des deux valeurs. Si le chiffre d'affaires annuel d'un commercial est supérieur à 200 000, cette personne sera éligible à un bonus. Des valeurs inférieures à 200 000 signifient que les employés ne sont pas admissibles aux primes.
SQL inclut plusieurs fonctions mathématiques que vous pouvez utiliser pour effectuer des calculs sur des valeurs d'entrée et renvoyer des résultats numériques.
Un exemple est la fonction SIGN
, qui renvoie une valeur indiquant le signe d'une expression. La valeur -1 indique une expression négative, la valeur +1 indique une expression positive et 0 indique zéro.
SELECT SIGN(-20) AS 'Sign'
Signe |
---|
-1 |
Dans l'exemple, l'entrée est un nombre négatif, donc le volet Résultats répertorie le résultat -1.
Une autre fonction mathématique est la fonction POWER
. Cette fonction fournit la valeur d'une expression portée à une puissance spécifiée.
Dans la syntaxe, le paramètre float_expression spécifie l'expression et le paramètre y spécifie la puissance à laquelle vous souhaitez augmenter l'expression.
SELECT POWER(50, 3) AS Result
Résultat |
---|
125000 |