
テーブル名を[]でくくらないとエラーになってしまいます
sqlserver 2008 express edition を利用しているのですが
テーブル名 やカラム名に[]でくくってSQL文を実行しないと
エラーが出てしまいます
例えば
select * from [table] の様にしないといけません
これを
select * from table で実行できるようにしたいのです
どうしたらいいのでしょうか
会社ではsqlserver2005を利用しているので
2008からは[]でくくる必要になったのでしょうか
それとも初期設定で何かしないといけないのでしょうか
設定方法を教えて下さい
sqlserver management studio2008もインストール済みです
No.1ベストアンサー
- 回答日時:
「table」はSQLの予約語です。
そのため初期設定などで、「table」をそのままSQL文に使用することは出来ません。これは他のRDBも同様です。SQL SERVERでは[]で括ることで、予約語をオブジェクト名に出来ますが、おすすめは出来ません。
なお、ANSI/ISOの標準規格では「"(ダブルクォーテーション)」で括ることで、同様にエラーを回避できます。SQL SERVERでも初期設定でANSI/ISOと同様に「"」で括るモードにすることは出来ますが、それでも予約語である以上何らかの対応は必要です。
> 会社ではsqlserver2005を利用しているので
> 2008からは[]でくくる必要になったのでしょうか
そんなことはないはずです。
No.3
- 回答日時:
予約後だけではなく、命名規則に反したテーブルも[]でくくれば作成できてしまいます。
当然、命名規則に反するのでselectする際もエラーになりますが、select時にも[]でくくればアクセス可能です。
あと、エラーがでるならエラーコードや内容や、本当に発行しているSQL(再現するもの)を書きましょう。
予約語が原因なのか命名規則に反するのか想定でしか書けません。
select * from tableはサンプルなのでしょうか。それでは予約語と突っ込みが入るのはしかたがありません。
create table 111 (a char(1))
メッセージ 102、レベル 15、状態 1、行 1
'111' 付近に不適切な構文があります。
create table [111] (a char(1))
コマンドは正常に完了しました。
select * from 111
メッセージ 102、レベル 15、状態 1、行 1
'111' 付近に不適切な構文があります。
select * from [111]
(0 行処理されました)
当然、数字のみのオブジェクトは命名規則に反します。
No.2
- 回答日時:
何で予約語をテーブル名にしてるの?
そこが信じられません。
以下のページに、こう書いてあります。
…Transact-SQL スクリプトで、SQL Server の予約済みキーワードを識別子およびオブジェクト名として使用することは構文的に可能ですが、これは識別子を区切って使用するときに限られます。
予約済みキーワード (Transact-SQL)
http://msdn.microsoft.com/ja-jp/library/ms189822 …
| それとも初期設定で何かしないといけないのでしょうか
| 設定方法を教えて下さい
初期設定も何も、予約語を使うなと書いてあるのですから、名前を変更するしか手はないです。
これは2005でも2008でも変わっていません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PostgreSQL 列が存在しないと言われる 2 2023/02/10 18:33
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- PostgreSQL postgreSQL カラムの全ての値を取得したい 3 2022/10/07 12:33
- Oracle SQL update方法 2 2022/06/22 14:07
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
- Access(アクセス) Access DAOのExecuteメソッドのオプション(RecordsetOptionEnum)に 1 2022/09/19 07:34
- MySQL SQLです。下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「昨年の各月の総降 1 2023/07/01 00:32
このQ&Aを見た人はこんなQ&Aも見ています
-
SQLのエラー(~付近に不適切な構文があります)
SQL Server
-
GROUP BYを行った後に結合したい。
Oracle
-
'modify' 付近に不適切な構文があります。
SQL Server
-
-
4
項目名の制限について
SQL Server
-
5
SELECT INTOで一度に複数の変数へ代入をするにはどのようにすれがよいでしょうか?
PostgreSQL
-
6
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
7
テーブルのレコード削除ができません
SQL Server
-
8
vb.netで画面のコントロールId名を変数で動的に制御し処理する方法
Visual Basic(VBA)
-
9
select insertで複数テーブルから値を取得したい
Oracle
-
10
【SQL】他テーブルに含まれる値に合致する行を抽出
その他(データベース)
-
11
Visual Studio 「AnyCpu」について
C言語・C++・C#
-
12
ADO VBA 実行時エラー3021
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CLOB型へのINSERT
-
グループの数を取得したい
-
truncate文で全テーブルを一気...
-
Oracle複数の表をもとにmerge文...
-
複数テーブルのUPDATE
-
count(1)とcount(*)の違い
-
テーブル名を[]でくくらないと...
-
データを削除しても表領域の使...
-
datapumpの実行方法について
-
異なるスキーマからデータを抽...
-
検索結果の列数を動的に変更したい
-
Viewにインデックスは張れ...
-
可変個数のデータはどう納める?
-
同じSELECT文同士でのデ...
-
Data Pump で大量データインポ...
-
表領域の使用率がもうすぐ100%
-
DELETE文でFROM句を省略した場合
-
テーブルからのselectにおいて...
-
ACCESS 複数テーブル・複数フィ...
-
SQL*Loaderで、データを加工し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CLOB型へのINSERT
-
truncate文で全テーブルを一気...
-
oracleのプライマリ・キー名の変更
-
Oracle複数の表をもとにmerge文...
-
テーブル名を[]でくくらないと...
-
グループの数を取得したい
-
1つのテーブル・2つの列を結合...
-
主キーが二つのテーブルのselec...
-
複数テーブルのUPDATE
-
count(1)とcount(*)の違い
-
Oracle テーブルの列削除
-
OracleのCreate Table 文のStor...
-
SQLのto_char関数の未定義エラー
-
質問344の続きですが・・
-
SQLで・・
-
DBで第1正規形と第2正規形の...
-
Oracle上のテーブルからCREATE ...
-
ストアドファンクションの戻り...
-
"table device"とは何かについて
-
sqlplusで実行したSQLの結果を...
おすすめ情報