Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL の使用法 » データのクエリと変更 » データのクエリ » select リスト:カラムの指定

 

SELECT リストの値の計算

select リストの式は、カラム名や文字列だけではなく、より複雑にできます。たとえば、select リストの数値カラムのデータを使用して計算を行うことができます。

算術演算

select リストで実行できる数値演算を説明するには、まず SQL Anywhere サンプル・データベース内の製品の名前、在庫数、単価をリストすることから始めます。

SELECT Name, Quantity, UnitPrice
FROM Products;
Name Quantity UnitPrice
Tee Shirt 28 9
Tee Shirt 54 14
Tee Shirt 75 14
Baseball Cap 112 9
... ... ...

どの製品も在庫数が 10 になったときに在庫を補充するとします。次のクエリは、各製品をあといくつ売ったら再発注するかをリストします。

SELECT Name, Quantity - 10
   AS "Sell before reorder"
FROM Products;
Name Sell before reorder
Tee Shirt 18
Tee Shirt 44
Tee Shirt 65
Baseball Cap 102
... ...

カラムの値を組み合わせることもできます。次のクエリは、在庫中の各製品の総額をリストします。

SELECT Name, Quantity * UnitPrice AS "Inventory value"
FROM Products;
Name Inventory value
Tee Shirt 252.00
Tee Shirt 756.00
Tee Shirt 1050.00
Baseball Cap 1008.00
... ...
算術演算子の優先度

1 つの式に算術演算子が 2 つ以上ある場合は、乗法、除法、剰余をまず計算し、その後で減法と加法を計算します。1 つの式のすべての算術演算子の優先度が同じ場合、計算は左から右に順番に行われます。カッコに入っている式は、他のすべての計算より優先されます。

たとえば、次の SELECT 文は、在庫中の各製品の総額を計算し、次にその値から 5 ドル引きます。

SELECT Name, Quantity * UnitPrice - 5
FROM Products;

確実に正しい結果を得るためには、可能な限りカッコを使用します。次のクエリは前述のクエリと同じ意味で、同じ結果を生成しますが、構文の精度が高くなります。

SELECT Name, ( Quantity * UnitPrice ) - 5
FROM Products;

演算子の優先度も参照してください。

文字列の演算

文字列連結演算子を使用して文字列を連結できます。「||」(SQL/2003 準拠) または「+」(Adaptive Server Enterprise でサポート) を連結演算子として使用します。たとえば、次の文では、結果の Surname と GivenName の値を取り出して、連結しています。

SELECT EmployeeID, GivenName || ' ' || Surname AS Name
FROM Employees;
EmployeeID Name
102 Fran Whitney
105 Matthew Cobb
129 Philip Chin
148 Julie Jordan
... ...
日付と時刻の演算

日付カラムと時刻カラムでも演算子を使用できますが、そのためには一般的に関数を使用することになります。SQL 関数を参照してください。

計算カラムについての注意事項
  • カラムのエイリアスを指定できる   デフォルトでは、カラム名は select リストにリストされる式ですが、計算カラムの場合、式では煩雑でわかりにくくなります。

  • その他の演算子を使用できる   乗算演算子はカラムを結合するために使用できます。標準的な算術演算子、論理演算子、文字列演算子など、その他の演算子も使用できます。

    たとえば、次のクエリは、すべての顧客のフル・ネームをリストします。

    SELECT ID, (GivenName || ' ' || Surname ) AS "Full name"
    FROM Customers;

    || 演算子は文字列を連結しています。このクエリの場合、カラムのエイリアスにはスペースが付いているので、二重引用符で囲みます。この規則は、カラムのエイリアスだけでなく、データベース内のテーブル名やその他の識別子にも適用されます。演算子を参照してください。

  • 関数を使用できる   カラムを結合するだけでなく、さまざまな組み込み関数を使用して、必要な結果を得ることができます。

    たとえば、次のクエリは製品名を大文字でリストします。

    SELECT ID, UCASE( Name )
    FROM Products;
    ID UCASE(Products.name)
    300 TEE SHIRT
    301 TEE SHIRT
    302 TEE SHIRT
    400 BASEBALL CAP
    ... ...

    SQL 関数を参照してください。