Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette rubrique fournit une référence rapide aux requêtes Entity SQL. Les requêtes de cette rubrique sont basées sur le modèle AdventureWorks Sales.
Littéraux
Chaîne
Les chaînes de caractères littérales peuvent être au format Unicode ou non-Unicode. Les chaînes Unicode sont précédées de N. Par exemple, N'hello'.
Exemple de littéral de chaîne non-Unicode :
'hello'
--same as
"hello"
Sortie:
| Valeur |
|---|
| Bonjour |
Date et heure
Dans les littéraux DateTime, les parties date et heure sont obligatoires. Il n’existe aucune valeur par défaut.
Exemple:
DATETIME '2006-12-25 01:01:00.000'
--same as
DATETIME '2006-12-25 01:01'
Sortie:
| Valeur |
|---|
| 25/12/2006 1:01:00 du matin |
Nombre entier
Les littéraux entiers peuvent être de type Int32 (123), UInt32 (123U), Int64 (123L) et UInt64 (123UL).
Exemple:
--a collection of integers
{1, 2, 3}
Sortie:
| Valeur |
|---|
| 1 |
| 2 |
| 3 |
Autres
D’autres littéraux pris en charge par Entity SQL sont Guid, Binary, Float/Double, Decimal et null. Les littéraux Null dans Entity SQL sont considérés comme compatibles avec tous les autres types du modèle conceptuel.
Constructeurs de type
RANGÉE
ROW construit une valeur anonyme et structurellement typée (enregistrement) comme dans : ROW(1 AS myNumber, 'Name' AS myName).
Exemple:
SELECT VALUE row (product.ProductID AS ProductID, product.Name
AS ProductName) FROM AdventureWorksEntities.Product AS product
Sortie:
| Identifiant produit | Nom |
|---|---|
| 1 | Course réglable |
| 879 | stand de vélo All-Purpose |
| 712 | AWC Logo Cap |
| ... | ... |
MULTISET
MULTISET construit des collections, telles que :
MULTISET(1,2,2,3)
--same as
-
{1,2,2,3}.
Exemple:
SELECT VALUE product FROM AdventureWorksEntities.Product AS product WHERE product.ListPrice IN MultiSet (125, 300)
Sortie:
| Identifiant produit | Nom | Numéro de Produit | … |
|---|---|---|---|
| 842 | Touring-Panniers, Grand | PA-T100 | … |
Objet
Un constructeur de type nommé construit des objets définis par l’utilisateur, tels que person("abc", 12).
Exemple:
SELECT VALUE AdventureWorksModel.SalesOrderDetail (o.SalesOrderDetailID, o.CarrierTrackingNumber, o.OrderQty,
o.ProductID, o.SpecialOfferID, o.UnitPrice, o.UnitPriceDiscount,
o.rowguid, o.ModifiedDate) FROM AdventureWorksEntities.SalesOrderDetail
AS o
Sortie:
| SalesOrderDetailID | Numéro de suivi du transporteur | Quantité de commande | Identifiant produit | ... |
|---|---|---|---|---|
| 1 | 4911-403C-98 | 1 | 776 | ... |
| 2 | 4911-403C-98 | 3 | 777 | ... |
| ... | ... | ... | ... | ... |
références
REF
REF crée une référence à une instance de type d’entité. Par exemple, la requête suivante retourne des références à chaque entité Order dans l’ensemble d’entités Orders :
SELECT REF(o) AS OrderID FROM Orders AS o
Sortie:
| Valeur |
|---|
| 1 |
| 2 |
| 3 |
| ... |
L’exemple suivant utilise l’opérateur d’extraction de propriété (.) pour accéder à une propriété d’une entité. Lors de l'utilisation de l'opérateur d'extraction de propriété, la référence est automatiquement supprimée.
Exemple:
SELECT VALUE REF(p).Name FROM
AdventureWorksEntities.Product AS p
Sortie:
| Valeur |
|---|
| Course réglable |
| stand de vélo All-Purpose |
| AWC Logo Cap |
| ... |
DEREF
DEREF déréférence une valeur de référence et produit le résultat de cette déréférencement. Par exemple, la requête suivante génère les entités Order pour chaque élément Order du jeu d'entités Orders : SELECT DEREF(o2.r) FROM (SELECT REF(o) AS r FROM LOB.Orders AS o) AS o2.
Exemple:
SELECT VALUE DEREF(REF(p)).Name FROM
AdventureWorksEntities.Product AS p
Sortie:
| Valeur |
|---|
| Course réglable |
| stand de vélo All-Purpose |
| AWC Logo Cap |
| ... |
CREATEREF et KEY
CREATEREF crée une référence en passant une clé. KEY extrait la partie clé d’une expression avec une référence de type.
Exemple:
SELECT VALUE Key(CreateRef(AdventureWorksEntities.Product, row(p.ProductID)))
FROM AdventureWorksEntities.Product AS p
Sortie:
| Identifiant produit |
|---|
| 980 |
| 365 |
| 771 |
| ... |
Fonctions
Canonique
L’espace de noms pour les fonctions canoniques est Edm, comme dans Edm.Length("string"). Vous n’avez pas besoin de spécifier l’espace de noms, sauf si un autre espace de noms est importé qui contient une fonction portant le même nom qu’une fonction canonique. Si deux espaces de noms ont la même fonction, l’utilisateur doit spécifier le nom complet.
Exemple:
SELECT Length(c. FirstName) AS NameLen FROM
AdventureWorksEntities.Contact AS c
WHERE c.ContactID BETWEEN 10 AND 12
Sortie:
| NameLen |
|---|
| 6 |
| 6 |
| 5 |
Spécifiques au fournisseur Microsoft
Les fonctions spécifiques au fournisseur Microsoft se trouvent dans l'espace de noms SqlServer.
Exemple:
SELECT SqlServer.LEN(c.EmailAddress) AS EmailLen FROM
AdventureWorksEntities.Contact AS c WHERE
c.ContactID BETWEEN 10 AND 12
Sortie:
| EmailLen |
|---|
| 27 |
| 27 |
| 26 |
Espaces de noms
USING spécifie les espaces de noms utilisés dans une expression de requête.
Exemple:
using SqlServer; LOWER('AA');
Sortie:
| Valeur |
|---|
| Aa |
Feuilletage
La pagination peut être spécifiée en déclarant les sous-clauses SKIP et LIMIT dans la clause ORDER BY.
Exemple:
SELECT c.ContactID as ID, c.LastName AS Name FROM
AdventureWorks.Contact AS c ORDER BY c.ContactID SKIP 9 LIMIT 3;
Sortie:
| id | Nom |
|---|---|
| 10 | Adina |
| 11 | Agcaoili |
| 12 | Aguilar |
Regroupement
GROUPING BY spécifie les groupes dans lesquels les objets retournés par une expression de requête (SELECT) doivent être placés.
Exemple:
SELECT VALUE name FROM AdventureWorksEntities.Product AS P
GROUP BY P.Name HAVING MAX(P.ListPrice) > 5
Sortie:
| nom |
|---|
| LL Mountain Seat Assembly |
| ML Mountain Seat Assembly |
| HL Mountain Seat Assembly |
| ... |
Menu de navigation
L'opérateur de navigation de relations vous permet de parcourir la relation entre une entité (terminaison From) et une autre entité (terminaison To). NAVIGATE prend le type de relation qualifié comme <namespace>.<nom du type de relation>. Navigate retourne Ref<T> si la cardinalité de la terminaison To est 1. Si la cardinalité de la terminaison To est n, la valeur retournée est Collection<Ref<T>>.
Exemple:
SELECT a.AddressID, (SELECT VALUE DEREF(v) FROM
NAVIGATE(a, AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID) AS v)
FROM AdventureWorksEntities.Address AS a
Sortie:
| AddressID |
|---|
| 1 |
| 2 |
| 3 |
| ... |
SELECT VALUE et SELECT
SÉLECTIONNER UNE VALEUR
Entity SQL fournit la clause SELECT VALUE pour ignorer la construction de ligne implicite. Un seul élément peut être spécifié dans une clause SELECT VALUE. Lorsqu'une telle clause est utilisée, aucun contour de ligne n’est construit autour des éléments de la clause SELECT, et une collection de la forme souhaitée peut être produite, par exemple : SELECT VALUE a.
Exemple:
SELECT VALUE p.Name FROM AdventureWorksEntities.Product AS p
Sortie:
| Nom |
|---|
| Course réglable |
| stand de vélo All-Purpose |
| AWC Logo Cap |
| ... |
Sélectionner
Entity SQL fournit également le constructeur de ligne pour construire des lignes arbitraires. SELECT prend un ou plusieurs éléments dans la projection et génère un enregistrement de données avec des champs, par exemple : SELECT a, b, c.
Exemple:
SELECT p.Name, p.ProductID FROM AdventureWorksEntities.Product as p Output :
| Nom | Identifiant produit |
|---|---|
| Course réglable | 1 |
| stand de vélo All-Purpose | 879 |
| AWC Logo Cap | 712 |
| ... | ... |
Expression CASE
L’expression case évalue un ensemble d’expressions booléennes pour déterminer le résultat.
Exemple:
CASE WHEN AVG({25,12,11}) < 100 THEN TRUE ELSE FALSE END
Sortie:
| Valeur |
|---|
| VRAI |