式 (Transact-SQL)
SQL Server データベース エンジンによって 1 つのデータ値を取得するために評価される、記号と演算子の組み合わせです。単純式には、1 つの定数、変数、列、またはスカラ関数を指定できます。演算子を使用すると、2 つ以上の単純式を結合して、複合式を作成できます。
構文
{ constant | scalar_function | [ table_name. ] column | variable
| ( expression ) | ( scalar_subquery )
| { unary_operator } expression
| expression { binary_operator } expression
| ranking_windowed_function | aggregate_windowed_function
}
引数
用語 |
定義 |
---|---|
constant |
1 つの特定のデータ値を表す記号です。詳細については、「定数 (Transact-SQL)」を参照してください。 |
scalar_function |
特定のサービスを提供し、1 つの値を返す Transact-SQL 構文の単位です。scalar_function には、SUM、GETDATE、CAST などの組み込みスカラ関数、またはユーザー定義のスカラ関数を指定できます。 |
[ table_name. ] |
テーブルの名前または別名です。 |
column |
列の名前を指定します。式では列の名前だけが許可されます。 |
variable |
変数名、またはパラメータを指定します。詳細については、「DECLARE @local_variable (Transact-SQL)」を参照してください。 |
(expression ) |
このトピックで定義されている有効な式を指定します。かっこはグループ化の演算子です。かっこ内の式のすべての演算子は最初に評価され、その後で結果の式が別の式と結合されます。 |
(scalar_subquery) |
1 つの値を返すサブクエリを指定します。以下に例を示します。 SELECT MAX(UnitPrice) FROM Products |
{ unary_operator } |
1 つの数値オペランドだけを含む演算子を指定します。
単項演算子を適用できるのは、数値型に属するいずれかのデータ型に評価される式だけです。 |
{ binary_operator } |
2 つの式を結合して 1 つの結果を生成する方法を定義する演算子を指定します。binary_operator には、算術演算子、代入演算子 (=)、ビットごとの演算子、比較演算子、論理演算子、文字列の連結演算子 (+)、または単項演算子を指定できます。演算子の詳細については、「演算子 (Transact-SQL)」を参照してください。 |
ranking_windowed_function |
任意の Transact-SQL 順位付け関数を指定します。詳細については、「順位付け関数 (Transact-SQL)」を参照してください。 |
aggregate_windowed_function |
任意の Transact-SQL 集計関数を、OVER 句と共に指定します。詳細については、「OVER 句 (Transact-SQL)」を参照してください。 |
式の結果
1 つの定数、変数、スカラ関数、または列名で構成される単純式の場合、式のデータ型、照合順序、有効桁数、小数点以下桁数、および値は、参照される要素のデータ型、照合順序、有効桁数、小数点以下桁数、および値になります。
2 つの式が比較演算子または論理演算子で結合される場合、取得される結果のデータ型は Boolean で、TRUE、FALSE、UNKNOWN のいずれかの値をとります。Boolean 型の詳細については、「演算子 (Transact-SQL)」を参照してください。
2 つの式が、算術演算子、ビットごとの演算子、または文字列演算子で結合される場合、取得される結果のデータ型は演算子によって決まります。
複数の記号と演算子で構成される複合式は、単一の値をとる結果に評価されます。結果の式のデータ型、照合順序、有効桁数、および値は、構成要素の式を一度に 2 つずつ結合して取得される最終結果によって決まります。式の結合順序は、式の中の演算子の優先順位で定義されます。
説明
2 つの式を演算子で結合できるのは、その演算子で両方のデータ型がサポートされており、次に示す条件の少なくとも 1 つが TRUE の場合です。
式のデータ型が等しい。
優先順位の低いデータ型を、優先順位の高いデータ型に暗黙的に変換できる。
式がこれらの条件を満たしていない場合は、CAST 関数または CONVERT 関数によって、低い優先順位のデータ型から高い優先順位のデータ型へ明示的に変換できます。または、高い優先順位のデータ型への暗黙的な変換が可能な中間のデータ型へ変換できます。
暗黙的または明示的な変換がサポートされない場合、2 つの式を結合することはできません。
文字列として評価される式の照合順序は、照合順序の優先順位の規則に従って設定されます。詳細については、「照合順序の優先順位 (Transact-SQL)」を参照してください。
C や MicrosoftVisual Basic などのプログラミング言語の場合、式は常に単一の結果に評価されます。Transact-SQL 選択リスト内の式の場合は、この規則の限りではありません。式は、結果セット内の各行に対して個別に評価されます。1 つの式が結果セット内の各行でそれぞれ異なる値をとることもあります。ただし、各行の値は式に対して 1 つだけです。たとえば、次の SELECT ステートメントにおいて、選択リスト内の ProductID への参照と 1+2 の項は両方とも式です。
USE AdventureWorks;
GO
SELECT ProductID, 1+2
FROM Production.Product;
GO
式 1+2 は、結果セット内の各行で 3 と評価されます。式 ProductID は、結果セットの各行で一意な値をとりますが、各行に格納される ProductID の値は 1 つだけです。