AccessクエリとSQLの関係 フィールドに式を書く

さて、Accessクエリの続きである。
前回は、抽出条件のところで、フィールドを指定をしてみた。
SELECT命令のSELECT句に列名をカンマで区切ってかけば抽出するフィールドを指定することができた。
今回は、フィールドに式を入れてみたいと思う。
フィールドに式を書く
フィールドには列名だけでなく、列名を加工するような式を書くことができる。よくやるのは、単価*個数で金額を計算する、なんていうことです。
やることは単純。フィールドのところに、計算式を書き込めばよい。
b列の倍を計算するように、2列目を変更してみた。
Accessbx2に変更2017-05-26 (18).png
フィールドの入力フォーカスを矢印キーで移動して外すと、自動的に表示方法が変更される。
式1: [b]*2
となった。
なんで勝手にかわっちゃうのよ、と思うのだが、これにはいろいろ事情がある。
Access勝手に変わった2017-05-26 (19).png
式1:の正体
式1:は、Accessがそのフィールドに勝手に付けた名前である。列を指定した場合は、それが名前であるため、Accessはフィールド名として列名をそのまま使用する。計算式にすると、名前とはいいがたくなる。現に記号である「*」を使用しているので、名前としては認められない。
SQLでは、*などの記号は名前に使用できない。
SQLビュー、データシートビューに切り替えてみてみると以下のような対応となっていることがわかる。
Access別名とAS2017-05-26 (19).png
式1は、計算式「[b] * 2」に付けられた名前である。
SQLでは、SELECT句の各列に対して、ASキーワードで別名を指定できる。別名なんです。Accessのデザインビューでは、「別名:計算式」といった書式となる。
なので、列名だけのフィールドに対しても別名を付けることが可能。
別名:a
とかしてみたらわかります。
[ ] の正体
記号は使ってはいけないのか、では[と]は?使っても良いのか?
はい、[ と ] は名前のうちに入らない。列名はあくまでbだけで、bが列名であることを正確に表記したいがために、[と]で囲んでやる。
文字列を表現するのに、"で囲む、っていうことをやるでしょ?C言語とかで。SQLでも文字列は'で囲んでやる。囲まれた中のデータが実際のデータで、囲んでいる記号はデータには含まれない。
詳しくは、SQLポケリを参照して欲しいのだ。

[改訂第4版]SQLポケットリファレンス

[改訂第4版]SQLポケットリファレンス

  • 作者: 朝井 淳
  • 出版社/メーカー: 技術評論社
  • 発売日: 2017/02/18
  • メディア: 単行本(ソフトカバー)

投稿者プロフィール

asai
asai