- 締切済み
- すぐに回答を!
SQLの[ ] は?
ひとつどうしても気になる事があります。 Access97でSQL文を作ってるのですが、どうしても[]が 付くんです。 例えば 1:"SELECT [BACKUP-2].住所1 FROM [BACKUP-2]" って感じです。 別のテーブルは 2:"SELECT BACKUP-1.住所1 FROM BACKUP-1" で動きます。 これって何が違うのでしょうか?1は[ ]をとると 構文エラーとなって動いてくれません。 どうしても気になってしかたないのですが。 理由を教えてください。
- BOLTS
- お礼率89% (365/407)
- その他(データベース)
- 回答数3
- ありがとう数4
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- 回答No.3
- tak2003
- ベストアンサー率32% (174/540)
ちなみに普通のRDBMSでは区別のときに[]は使わないですね。 MSのアクセス固有の表示だと思います。 アクセスのクエリを作るときに、ビルドを使うと思うのですが、テーブル名を指定してからフィールドを選択すると[]はつかないですよね。 テーブルやクエリを指定しないでフィールドを指定するときは[]でテーブルやクエリを指定しないとフィールドを指定できません。 これは[]で無理やりテーブルやクエリを指定できますよということだと思います。 (以前に作ったクエリーを使用しようとした場合、一度セーブしないと使えませんので注意してください。) アクセスはまだまだ訳のわからんエラーで落ちますので、こまめな保存が必要です。半日分の作業がなくなったりしますので注意してください。
- 回答No.2
- chairwarmer
- ベストアンサー率41% (163/393)
テーブル名のハイフンが問題だと思われます。 テーブル名、フィールド名などに半角のハイフン(-)が用いられている場合 ACCESSのSQLはそれを名前の一部ではなく意味のある記号(つまりマイナス) と判断してしまいますので、半角ハイフンを含んだ名称を認識させるために 前後に [ ] をつける必要があり、ACCESSが自動的に付加する形になります。 半角スペースを含んだ名前なども同じですね。 (こちらはスペースの場所で名前が終わっていると見なされる) BACKUP-1の方のSQLが上手く動く理由は分かりませんが 長音(ー)や全角ハイフン(-)であれば単なる文字と見なされますし 外部のデータベースに接続するパススルークエリなどであった場合は SQLの文法が変わってくる事があります。
質問者からのお礼
ずばりのご指摘ありがとうございます。 なんとか疑問解決です。 そんな細々したことがよくわかりません。 助かりました。
- 回答No.1

手元にACCESSが無いのでなんともいえませんが、同じくマイクロソフトの業務用データベースである「SQL Server」では、列の名前として「普通は使えなさそうな文字」、たとえば記号とか、が含まれる場合に、大括弧で囲むんだったと記憶しています。 もしかしたら、ハイフンか何かがそのままでは読んでもらえないので、自動的に括弧を付けてくれているのかな?とも思うのですが、片方ではうまくいくってのがよくわかりませんね。 でもまぁ、そのあたり、列名による現象ではないか?というアプローチで調べて見られてはいかがでしょうか?
質問者からのお礼
ありがとうございます。 どうも2の-が普通の-と違ったみたいです。 1の-を消してみたら確かに消えました。 じゃあもう一個試したスラッシュも同じ理由なのでしょうね。 どうもそれらしいです。 ありがとうございました。
関連するQ&A
- ACCESSのSQLの書き方
ACCESSでのSQL文の書き方を教えてください。 テーブルtbl_Aとテーブルtbl_Bがあり, tbl_Aで得られた数値とtbl_Bで得られた数値を加えたものを結果として表示します。 どう書けばよろしいのでしょうか。どうしてもエラーになってしまいます。 イメージとしてはこんな感じです。 select (select ~~ from tbl_A where ~~)+(select ~~ from tbl_B where ~~) (もしoracleならば,「from dual」というのを最後に付けるんですが。)
- ベストアンサー
- その他(データベース)
- SQL文について
開発言語:VB2010 DB:SqlServer2005 及び ACCESS2007 SQLサーバーのテーブルをAccessのテーブルへINSERTしたいのですが、 一文で行う事は可能でしょうか? (テーブルの構造は全く同じです) 同じDB内であれば、下記のような感じで出来ると思うんですが。 +----------------------------------+ INSERT into Atest_ACCESS SELECT * FROM Btest_SQL Where OperationDate => 2011/09/05 +----------------------------------+ 出来るのあればどのようにすれば良いのが教えて頂けると幸いです。 よろしくお願い致します。
- ベストアンサー
- Visual Basic
- これも「SQLの発行」している事になるのでしょうか
accessの勉強をしていると、SQLの発行という言葉を良く見かけます。 しかし意味が良くわからないのでご教示いただきたいです。 -------------------------- SELECT テーブル1.* FROM テーブル1; -------------------------- 選択クエリとして、上記のSQL文を作り、保存し、 このクエリを開いただけでも 「SQLの発行」をした事になるのでしょうか? よろしくお願いいたします。
- ベストアンサー
- その他MS Office製品
- Access、SQLステートメントでの仮テーブルの作り方について
AccessのSQLステートメントで仮テーブルを使ったSQLを作りたいのですが、構文の書き方がよくわかりません。 わからないなりに以下のようなSQL文を作ってみたのですが、 SELECT TBL.NO FROM [SELECT NO FROM ○○TBL WHERE △△="△△" GROUP BY NO HAVING (Mid(××,2,1)="K") ]. AS TBL; (本当はWHEREのあとにANDがたくさんあります) 実行すると、 「パラメータや別名が正しいこと、無効な文字や区切り記号が含まれていないこと、または名前が長すぎないことを確認してください。」 とメッセージが出ます。 仮テーブルに長いSELECT文をつかうことはできないのでしょうか? ちなみに環境はOS:Win2000+Access2000です。 どなたかアドバイスください。 よろしくお願いします。
- ベストアンサー
- その他(データベース)
- MSDEのSQLについて
DB初心者です。 通常のAcceessで支障なく使っていた以下のようなSQL文がMSDEのビューではエラーがかかって使えません。原因と対応法を教えて頂けないでしょうか? < 「テーブル1」の「フィールド1」と「フィールド2」の相関係数を算出するSQL文 > SELECT (Sum(([フィールド1]-(SELECT AVG([フィールド1]) FROM テーブル1))*([フィールド2]-(SELECT AVG([フィールド2]) FROM テーブル1))))/Sqr(Sum(([フィールド1]-(SELECT AVG([フィールド1]) FROM テーブル1))^2)*Sum(([フィールド2]-(SELECT AVG([フィールド2]) FROM テーブル1))^2)) AS 相関係数 FROM テーブル1; これがMSDEだと下のようなエラーになります。 ADOエラー: 集計やサブクエリを含む式に対して集計関数を実行することは出来ません。 どうしたいいでしょうか? また、MSDEや易しいTransactSQLを習得する良い方法があればアドバイスを頂きたいのですが。
- 締切済み
- その他(データベース)
- Delphi SQL
Delphi+InteBase 何がわからないのか、わかっていない状況です。 dbExpressのSQLConnection・SimpleDataSet、DataAccessのDataSource、DataControlsのDBGridを利用しています。 SimpleDataSetのDataset.CommandTextに「SELECT * FROM テーブル名」とかSQL文を書くことによって、希望のデータが表示されることまでは理解できました。 「SELECT MAX(ID) FROM テーブル名」など値を返す場合は、どのようにしたらよいのでしょうか? またCommandText:='DELETE FROM テーブル名'とすると、エラーにはなりますが、テーブルは空になっているのでtry文できりぬけています。 根本的にSQL文をどこに記述したらよいのかわかっていません。 どなたか、お助けを・・・
- ベストアンサー
- その他(データベース)
- accessのSQL文で
SELECT 科目Aテーブル.学生番号, 名簿テーブル.氏名, 科目Aテーブル.成績 INTO 科目Aテーブル2 FROM 名簿テーブル INNER JOIN 科目Aテーブル ON 名簿テーブル.学生番号 = 科目Aテーブル.学生番号; (これはテーブル作成クエリによるもの) と表示されたのですが SELECT ~ INTO ~ FROM ~ ON ~ ; のような構文はSQLにあるのでしょうか? ACCESS独自の拡張でしょうか? SELECT ~ INTO とSELECTにINTOがつく構文をインターネットで探したのですが見つかりません
- ベストアンサー
- オフィス系ソフト
- SQL '%@'とは?
こんばんわ。 SQLの質問なのですが、 SELECT * FROM aテーブル WHERE aテーブル.番号 IN '%@' というSQL文が 学校で使われていましたが、 '%@'とは何を指すのでしょうか? 調べても分からなかったので ご教授願います。
- 締切済み
- その他(データベース)
質問者からのお礼
たしかにアクセスって結構不安定な気がします。 いきなりテーブル参照が出来なくなったり過去何度 泣かされたことか。バックアップ気をつけます。 ありがとうございました。