Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе содержится краткая ссылка на запросы Entity SQL. Запросы в этом разделе основаны на модели AdventureWorks Sales.
Литералы
Струна
Существуют строковые литералы Юникода и символьные литералы, отличные от Юникода. Строки Юникода предопределяются N. Например, N'hello'.
Ниже приведен пример строкового литерала, не использующего Unicode.
'hello'
--same as
"hello"
Выходные данные:
| Ценность |
|---|
| Привет |
дата и время
В литералах DateTime обязательны как части даты, так и времени. Значения по умолчанию отсутствуют.
Пример:
DATETIME '2006-12-25 01:01:00.000'
--same as
DATETIME '2006-12-25 01:01'
Выходные данные:
| Ценность |
|---|
| 25.12.2006 01:01:00 |
Целое число
Целые литералы могут иметь тип Int32 (123), UInt32 (123U), Int64 (123L) и UInt64 (123UL).
Пример:
--a collection of integers
{1, 2, 3}
Выходные данные:
| Ценность |
|---|
| 1 |
| 2 |
| 3 |
Другое
Другие литералы, поддерживаемые Entity SQL, : Guid, Binary, Float/Double, Decimal и null. Литералы NULL в Entity SQL считаются совместимыми с каждым другим типом в концептуальной модели.
Конструкторы типов
РЯД
Row создает анонимное, структурно типизированное (запись) значение, как в: ROW(1 AS myNumber, 'Name' AS myName).
Пример:
SELECT VALUE row (product.ProductID AS ProductID, product.Name
AS ProductName) FROM AdventureWorksEntities.Product AS product
Выходные данные:
| Идентификатор продукта | Имя |
|---|---|
| 1 | Настраиваемая гонка |
| 879 | All-Purpose стойка для велосипеда |
| 712 | Кепка с логотипом AWC |
| ... | ... |
MULTISET
MultiSET создает коллекции, такие как:
MULTISET(1,2,2,3)
--same as
-
{1,2,2,3}.
Пример:
SELECT VALUE product FROM AdventureWorksEntities.Product AS product WHERE product.ListPrice IN MultiSet (125, 300)
Выходные данные:
| Идентификатор продукта | Имя | Номер продукта | … |
|---|---|---|---|
| 842 | Туринг-Панниерс, большой | PA-T100 | … |
Объект
Конструктор типа с именем создает (именованные) объекты, определяемые пользователем, такие как person("abc", 12).
Пример:
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
Выходные данные:
| ИдентификаторПодробностейЗаказа | Номер отслеживания перевозчика | КоличествоЗаказа | Идентификатор продукта | ... |
|---|---|---|---|---|
| 1 | 4911-403C-98 | 1 | 776 | ... |
| 2 | 4911-403C-98 | 3 | 777 | ... |
| ... | ... | ... | ... | ... |
Ссылки
REF
REF создает ссылку на экземпляр типа сущности. Например, следующий запрос возвращает ссылки на каждую сущность Order в наборе сущностей Orders:
SELECT REF(o) AS OrderID FROM Orders AS o
Выходные данные:
| Ценность |
|---|
| 1 |
| 2 |
| 3 |
| ... |
В следующем примере оператор извлечения свойств (.) используется для доступа к свойству сущности. При использовании оператора извлечения свойств ссылка автоматически преобразуется.
Пример:
SELECT VALUE REF(p).Name FROM
AdventureWorksEntities.Product AS p
Выходные данные:
| Ценность |
|---|
| Настраиваемая гонка |
| All-Purpose стойка для велосипеда |
| Кепка с логотипом AWC |
| ... |
DEREF
DEREF разыменовывает эталонное значение и создает результат разыменования. Например, следующий запрос создает сущности Order для каждого заказа в наборе сущностей Orders: SELECT DEREF(o2.r) FROM (SELECT REF(o) AS r FROM LOB.Orders AS o) AS o2..
Пример:
SELECT VALUE DEREF(REF(p)).Name FROM
AdventureWorksEntities.Product AS p
Выходные данные:
| Ценность |
|---|
| Настраиваемая гонка |
| All-Purpose стойка для велосипеда |
| Кепка с логотипом AWC |
| ... |
CREATEREF AND KEY
CREATEREF создает ссылку, передавая ключ. КЛЮЧ извлекает ключевую часть выражения со ссылкой на тип.
Пример:
SELECT VALUE Key(CreateRef(AdventureWorksEntities.Product, row(p.ProductID)))
FROM AdventureWorksEntities.Product AS p
Выходные данные:
| Идентификатор продукта |
|---|
| 980 |
| 365 |
| 771 |
| ... |
Функции
Канонический
Пространство имен для канонических функций — Edm, как и в Edm.Length("string"). Не нужно указывать пространство имен, если не импортируется другое пространство имен, содержащее функцию с тем же именем, что и каноническая функция. Если два пространства имен имеют одну и ту же функцию, пользователь должен указать полное имя.
Пример:
SELECT Length(c. FirstName) AS NameLen FROM
AdventureWorksEntities.Contact AS c
WHERE c.ContactID BETWEEN 10 AND 12
Выходные данные:
| NameLen |
|---|
| 6 |
| 6 |
| 5 |
Microsoft Provider-Specific
Специфичные для поставщика Майкрософт функции находятся в пространстве имен SqlServer.
Пример:
SELECT SqlServer.LEN(c.EmailAddress) AS EmailLen FROM
AdventureWorksEntities.Contact AS c WHERE
c.ContactID BETWEEN 10 AND 12
Выходные данные:
| EmailLen |
|---|
| двадцать семь |
| двадцать семь |
| 26 |
Пространства имен
USING задает пространства имен, используемые в выражении запроса.
Пример:
using SqlServer; LOWER('AA');
Выходные данные:
| Ценность |
|---|
| Аа |
Пейджинг
Разбиение на страницы можно выразить, указав подвыражения SKIP и LIMIT в предложении ORDER BY.
Пример:
SELECT c.ContactID as ID, c.LastName AS Name FROM
AdventureWorks.Contact AS c ORDER BY c.ContactID SKIP 9 LIMIT 3;
Выходные данные:
| Идентификатор | Имя |
|---|---|
| 10 | Адина |
| 11 | Агкаоили |
| 12 | Агилар |
Группировка
GROUPING BY указывает группы, в которые помещаются объекты, возвращаемые выражением запроса (SELECT).
Пример:
SELECT VALUE name FROM AdventureWorksEntities.Product AS P
GROUP BY P.Name HAVING MAX(P.ListPrice) > 5
Выходные данные:
| имя |
|---|
| Сборка сиденья LL Mountain |
| Сборка сиденья для горных велосипедов ML |
| Сборка сиденья HL Mountain |
| ... |
Навигация
Оператор навигации по отношениям позволяет перемещаться по связи от одной сущности (от начальной точки) к другой (к конечной точке). NAVIGATE принимает тип связи, указанный как <пространство имен>.<имя> типа связи. Навигация возвращает результат Ref<T> , если конечная точка имеет кратность 1. Если значение кратности конца равно n, возвращается коллекция<Ref<T>> .
Пример:
SELECT a.AddressID, (SELECT VALUE DEREF(v) FROM
NAVIGATE(a, AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID) AS v)
FROM AdventureWorksEntities.Address AS a
Выходные данные:
| AddressID |
|---|
| 1 |
| 2 |
| 3 |
| ... |
ВЫБРАТЬ ЗНАЧЕНИЕ И ВЫБРАТЬ
Выбрать значение
Entity SQL предоставляет предложение SELECT VALUE, чтобы пропустить неявное построение строк. В предложении SELECT VALUE можно указать только один элемент. Если такое предложение используется, оболочка строк не создается вокруг элементов в предложении SELECT, а коллекцию требуемой фигуры можно создать, например: SELECT VALUE a
Пример:
SELECT VALUE p.Name FROM AdventureWorksEntities.Product AS p
Выходные данные:
| Имя |
|---|
| Настраиваемая гонка |
| All-Purpose стойка для велосипеда |
| Кепка с логотипом AWC |
| ... |
ВЫБЕРИТЕ
Entity SQL также предоставляет конструктор строк для создания произвольных строк. SELECT принимает один или несколько элементов в проекции и приводит к записи данных с полями, например: SELECT a, b, c
Пример:
SELECT p.Name, p.ProductID ИЗ AdventureWorksEntities.Product как p Результат:
| Имя | Идентификатор продукта |
|---|---|
| Настраиваемая гонка | 1 |
| All-Purpose стойка для велосипеда | 879 |
| Кепка с логотипом AWC | 712 |
| ... | ... |
ВЫРАЖЕНИЕ CASE
Выражение case вычисляет набор логических выражений для определения результата.
Пример:
CASE WHEN AVG({25,12,11}) < 100 THEN TRUE ELSE FALSE END
Выходные данные:
| Ценность |
|---|
| ПРАВДА |