29

スペースを含む列名でテーブルを作成することは可能ですか?もしそうなら、どうすればそれを作成して使用できますか?

4

6 に答える 6

41

可能ですが、お勧めできません。列名を二重引用符で囲む必要があります。

create table my_table ("MY COLUMN" number);

ただし、ドキュメントの警告に注意してください。

注意: データベース オブジェクト名に引用符付き識別子を使用することはお勧めしません。これらの引用符で囲まれた識別子は SQL*Plus で受け入れられますが、データベース オブジェクトを管理する他のツールを使用する場合は無効になる場合があります。

名前は大文字と小文字が区別され、参照するたびに名前を二重引用符で囲む必要があります。

select "MY COLUMN" from my_table;

だから...しないでください、私のアドバイスになります...

于 2012-12-10T09:28:11.013 に答える
5

はい、可能です。必ず列名を引用する必要があります。例えば:

CREATE TABLE Fubar ("Foo Bar" INT);
INSERT INTO Fubar VALUES (1337);
SELECT "Foo Bar" FROM SpaceMonster

たとえそれが可能であっても、それは良い考えにはなりません。すべてのスペースをアンダースコアに置き換えるだけで、多くの苦痛から解放されるでしょう。

于 2012-12-10T09:27:42.120 に答える
3

2つの例の間で列に名前を付けることで可能" です: "My columN" 、列名は大文字と小文字が区別されます。

SELECT "my column" from table; --NOT OK
SELECT "My columN" from table; --OK
于 2012-12-10T09:28:54.943 に答える
2

これらを適切に引用すれば、(Oracle docを参照) ことができます。ただし、すべてを引用する必要があるため、これは良い考えではないと思います。一般に、データベースの命名基準/規則 (例: hereまたはhere ) では、空白よりもアンダースコア (引用符を必要としない) を使用することが好まれます。

于 2012-12-10T09:27:34.367 に答える
0

これについてGoogleで調べましたか?私はしました-6番目のリンクはthisで、次のものが見つかりました:

create table employee (
   "First Name" varchar2(20),
   "Last Name" varchar2(20),
   Address varchar2(60),
   Phone varchar2(15),
   Salary number,
   EmpID number,
   DeptID number
); 

... 10gで試してみるとうまくいきました。

于 2012-12-10T09:28:27.923 に答える
-1

これは、Oracle 用に定義された列ルールです。

列 (テーブル用)

  1. すべての列は {alias}_{colname} の形式です。たとえば、prs_id、prs_name、prs_adr_id、adr_street_name などです。これにより、トリガーまたはアプリケーション ロジックを使用して入力される別のテーブルの非正規化された列を除き、列名がスキーマ内で一意であることが保証されます。
    1. すべての列は単数形です。複数形の列名が必要だと思われる場合は、それが正しい設計であるかどうかよく考えてください。通常、同じ列に複数の値が含まれていることを意味し、これは避ける必要があります。
    2. すべてのテーブルには、テーブルの最初の列である {alias}_id の形式の代理主キー列があります。たとえば、prs_id、mat_id、adr_id です。

"" を使用して、いつでも列名 bu のエイリアスを持つことができます

于 2012-12-10T09:27:38.423 に答える