式 (Transact-SQL)

SQL Server データベース エンジンによって 1 つのデータ値を取得するために評価される、記号と演算子の組み合わせです。 単純式には、1 つの定数、変数、列、またはスカラー関数を指定できます。 演算子を使用すると、2 つ以上の単純式を結合して、複合式を作成できます。

トピック リンク アイコン Transact-SQL 構文表記規則

構文

{ 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 つの数値オペランドだけを含む演算子を指定します。

  • + は正の値を示します。

  • - は負の値を示します。

  • ~ は 1 の補数演算子を示します。

単項演算子を適用できるのは、数値型に属するいずれかのデータ型に評価される式だけです。

{ binary_operator }

2 つの式を結合して 1 つの結果を生成する方法を定義する演算子を指定します。 binary_operator には、算術演算子、代入演算子 (=)、ビットごとの演算子、比較演算子、論理演算子、文字列の連結演算子 (+)、または単項演算子を指定できます。 演算子の詳細については、「演算子 (Transact-SQL)」を参照してください。

ranking_windowed_function

任意の Transact-SQL 順位付け関数です。 詳細については、「順位付け関数 (Transact-SQL)」を参照してください。

aggregate_windowed_function

OVER 句を含む任意の Transact-SQL 集計関数です。 詳細については、「OVER 句 (Transact-SQL)」を参照してください。

式の結果

1 つの定数、変数、スカラー関数、または列名で構成される単純式の場合、式のデータ型、照合順序、有効桁数、小数点以下桁数、および値は、参照される要素のデータ型、照合順序、有効桁数、小数点以下桁数、および値になります。

2 つの式が比較演算子または論理演算子で結合される場合、取得される結果のデータ型は Boolean で、TRUE、FALSE、UNKNOWN のいずれかの値をとります。 Boolean 型の詳細については、「比較演算子 (Transact-SQL)」を参照してください。

2 つの式が、算術演算子、ビットごとの演算子、または文字列演算子で結合される場合、取得される結果のデータ型は演算子によって決まります。

複数の記号と演算子で構成される複合式は、単一の値をとる結果に評価されます。 結果の式のデータ型、照合順序、有効桁数、および値は、構成要素の式を一度に 2 つずつ結合して取得される最終結果によって決まります。 式の結合順序は、式の中の演算子の優先順位で定義されます。

説明

2 つの式を演算子で結合できるのは、その演算子で両方のデータ型がサポートされており、次に示す条件の少なくとも 1 つが TRUE の場合です。

  • 式のデータ型が等しい。

  • 優先順位の低いデータ型を、優先順位の高いデータ型に暗黙的に変換できる。

式がこれらの条件を満たしていない場合は、CAST 関数または CONVERT 関数によって、低い優先順位のデータ型から高い優先順位のデータ型へ明示的に変換できます。または、高い優先順位のデータ型への暗黙的な変換が可能な中間のデータ型へ変換できます。

暗黙的または明示的な変換がサポートされない場合、2 つの式を結合することはできません。

文字列として評価される式の照合順序は、照合順序の優先順位の規則に従って設定されます。 詳細については、「照合順序の優先順位 (Transact-SQL)」を参照してください。

C や Microsoft Visual Basic などのプログラミング言語の場合、式は常に単一の結果に評価されます。 Transact-SQL 選択リスト内の式の場合は、この規則の限りではありません。式は、結果セット内の各行に対して個別に評価されます。 1 つの式が結果セット内の各行でそれぞれ異なる値をとることもあります。ただし、各行の値は式に対して 1 つだけです。 たとえば、次の SELECT ステートメントにおいて、選択リスト内の ProductID への参照と 1+2 の項は両方とも式です。

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

式 1+2 は、結果セット内の各行で 3 と評価されます。 式 ProductID は、結果セットの各行で一意な値をとりますが、各行に格納される ProductID の値は 1 つだけです。

関連項目

参照

CASE (Transact-SQL)

CAST および CONVERT (Transact-SQL)

COALESCE (Transact-SQL)

データ型の優先順位 (Transact-SQL)

データ型 (Transact-SQL)

組み込み関数 (Transact-SQL)

LIKE (Transact-SQL)

NULLIF (Transact-SQL)

SELECT (Transact-SQL)

WHERE (Transact-SQL)

概念

データ型の変換 (データベース エンジン)