Udostępnij za pomocą


Wyrażenia (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punkt końcowy analizy SQL w usłudze Microsoft FabricHurtownia danych w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

Kombinacja symboli i operatorów, które aparat bazy danych programu SQL Server ocenia w celu uzyskania pojedynczej wartości danych. Wyrażenia proste mogą być pojedynczą stałą, zmienną, kolumną lub funkcją skalarną. Operatory mogą służyć do łączenia dwóch lub większej liczby prostych wyrażeń złożonych.

Transact-SQL konwencje składni

Syntax

Składnia dla programu SQL Server i usługi Azure SQL Database.

{ constant | scalar_function | [ table_name. ] column | variable
    | ( expression ) | ( scalar_subquery )
    | { unary_operator } expression
    | expression { binary_operator } expression
    | ranking_windowed_function | aggregate_windowed_function
}

Składnia dla usług Azure Synapse Analytics i Parallel Data Warehouse.

-- Expression in a SELECT statement
<expression> ::=
{
    constant
    | scalar_function
    | column
    | variable
    | ( expression )
    | { unary_operator } expression
    | expression { binary_operator } expression
}
[ COLLATE Windows_collation_name ]

-- Scalar Expression in a DECLARE , SET , IF...ELSE , or WHILE statement
<scalar_expression> ::=
{
    constant
    | scalar_function
    | variable
    | ( expression )
    | (scalar_subquery )
    | { unary_operator } expression
    | expression { binary_operator } expression
}
[ COLLATE [ Windows_collation_name ] ]

Arguments

stały

Symbol reprezentujący pojedynczą, konkretną wartość danych. Aby uzyskać więcej informacji, zobacz Stałe.

scalar_function

Jednostka składni Transact-SQL, która udostępnia określoną usługę i zwraca pojedynczą wartość. scalar_function mogą być wbudowane funkcje skalarne, takie jak SUMfunkcje , GETDATE()lub CAST funkcje zdefiniowane przez użytkownika.

table_name

Nazwa lub alias tabeli.

column

Nazwa kolumny. Tylko nazwa kolumny jest dozwolona w wyrażeniu.

variable

Nazwa zmiennej lub parametru. Aby uzyskać więcej informacji, zobacz DECLARE @local_variable.

expression

Dowolne prawidłowe wyrażenie zdefiniowane w tym artykule. Nawiasy są operatorami grupowania, które zapewniają, że wszystkie operatory w wyrażeniu w nawiasach są oceniane przed połączeniem wyrażenia wynikowego z innym.

scalar_subquery

Podzapytywanie zwracające jedną wartość. Przykład:

SELECT MAX(UnitPrice)
FROM Products;

unary_operator

Operatory jednoargumentowe można stosować tylko do wyrażeń, które są obliczane dla dowolnego z typów danych kategorii typów danych liczbowych. Jest operatorem, który ma tylko jeden operand liczbowy:

  • + wskazuje liczbę dodatnią
  • - wskazuje liczbę ujemną
  • ~ wskazuje operator dopełnień jednego

binary_operator

Operator, który definiuje sposób łączenia dwóch wyrażeń w celu uzyskania pojedynczego wyniku. binary_operator może być operatorem arytmetycznym, operatorem przypisania (=), operatorem bitowym, operatorem porównania, operatorem logicznym, operatorem łączenia ciągów (+) lub operatorem jednoargumentowym. Aby uzyskać więcej informacji na temat operatorów, zobacz Operatory.

ranking_windowed_function

Dowolna funkcja klasyfikacji Transact-SQL. Aby uzyskać więcej informacji, zobacz Funkcje klasyfikacji.

aggregate_windowed_function

Każda funkcja agregacji Transact-SQL z klauzulą OVER. Aby uzyskać więcej informacji, zobacz SELECT — OVER, klauzula.

Wyniki ekspresji

W przypadku prostego wyrażenia złożonego z pojedynczej stałej, zmiennej, funkcji skalarnej lub nazwy kolumny: typ danych, sortowanie, precyzja, skala i wartość wyrażenia to typ danych, sortowanie, precyzja, skala i wartość przywoływanego elementu.

Gdy dwa wyrażenia są łączone przy użyciu operatorów porównania lub operatorów logicznych, wynikowy typ danych to Wartość logiczna, a wartość to: TRUE, FALSElub UNKNOWN. Aby uzyskać więcej informacji na temat typów danych logicznych, zobacz Operatory porównania.

Gdy dwa wyrażenia są łączone przy użyciu operatorów arytmetycznych, bitowych lub ciągowych, operator określa wynikowy typ danych.

Wyrażenia złożone składają się z wielu symboli i operatorów, które są obliczane na wynik o pojedynczej wartości. Typ danych, sortowanie, precyzja i wartość wynikowego wyrażenia są określane przez połączenie wyrażeń składników, dwa naraz, aż do osiągnięcia końcowego wyniku. Sekwencja, w której wyrażenia są łączone, jest definiowana przez pierwszeństwo operatorów w wyrażeniu.

Remarks

Dwa wyrażenia mogą być łączone przez operator, jeśli oba mają typy danych obsługiwane przez operator, a co najmniej jeden z tych warunków jest spełniony:

  • Wyrażenia mają ten sam typ danych.

  • Typ danych o niższym pierwszeństwie można niejawnie przekonwertować na typ danych z wyższym pierwszeństwem typu danych.

Jeśli wyrażenia nie spełniają tych warunków, CAST można użyć funkcji lub CONVERT . Użyj CAST polecenia lub CONVERT , aby jawnie przekonwertować typ danych o niższym prioryencie na typ danych o wyższym pierwszeństwie lub na pośredni typ danych, który może być niejawnie przekonwertowany na typ danych o wyższym prioryencie.

Jeśli nie ma obsługiwanej niejawnej lub jawnej konwersji, nie można połączyć tych dwóch wyrażeń.

Sortowanie dowolnego wyrażenia, które oblicza ciąg znaków, jest ustawiane zgodnie z regułami pierwszeństwa sortowania. Aby uzyskać więcej informacji, zobacz priorytet sortowania.

W języku programowania, takim jak C lub Microsoft Visual Basic, wyrażenie zawsze daje wynik. Wyrażenia na liście wyboru Transact-SQL są zgodne z odmianą tej reguły: wyrażenie jest oceniane indywidualnie dla każdego wiersza w zestawie wyników. Pojedyncze wyrażenie może mieć inną wartość w każdym wierszu zestawu wyników, ale każdy wiersz ma tylko jedną wartość dla wyrażenia. Na przykład w następującej SELECT instrukcji odwołanie do ProductID i termin 1+2 na liście select są wyrażeniami:

USE AdventureWorks2022;
GO

SELECT ProductID, 1 + 2
FROM Production.Product;
GO

Wyrażenie 1+2 oblicza wartość 3 w każdym wierszu w zestawie wyników. Mimo że wyrażenie ProductID generuje unikatową wartość w każdym wierszu zestawu wyników, każdy wiersz ma tylko jedną wartość dla ProductIDelementu .

  • Usługa Azure Synapse Analytics przydziela stałej maksymalnej ilości pamięci do każdego wątku, dzięki czemu żaden wątek nie może używać całej pamięci. Część tej pamięci jest używana do przechowywania wyrażeń zapytań. Jeśli zapytanie ma zbyt wiele wyrażeń, a jego wymagana pamięć przekracza limit wewnętrzny, aparat go nie wykonuje. Aby uniknąć tego problemu, użytkownicy mogą zmienić zapytanie na wiele zapytań z mniejszą liczbą wyrażeń w każdej z nich. Na przykład masz zapytanie z długą listą wyrażeń w klauzuli WHERE:
DELETE
FROM dbo.MyTable
WHERE (c1 = '0000001' AND c2 = 'A000001')
    OR (c1 = '0000002' AND c2 = 'A000002')
    OR (c1 = '0000003' AND c2 = 'A000003')
/* ... additional, similar expressions omitted for simplicity */

Zmień to zapytanie na:

DELETE FROM dbo.MyTable WHERE (c1 = '0000001' AND c2 = 'A000001');
DELETE FROM dbo.MyTable WHERE (c1 = '0000002' AND c2 = 'A000002');
DELETE FROM dbo.MyTable WHERE (c1 = '0000003' AND c2 = 'A000003');
/* ... refactored, individual DELETE statements omitted for simplicity  */