2012-12-10 12 views
19

Czy można utworzyć tabelę z nazwą kolumny zawierającą spację? Jeśli tak, jak mogę go utworzyć i używać?Nazwa kolumny tabeli Oracle z przestrzenią

+4

Jest to możliwe - przeczytaj o "cytowanych identyfikatorach" w instrukcji. Ale ** zdecydowanie ** odradzam robienie tego. –

Odpowiedz

25

Jest to możliwe, ale nie jest zalecane. Musisz podać nazwę kolumny w podwójnych cudzysłowach.

create table my_table ("MY COLUMN" number); 

jednak zwrócić uwagę na ostrzeżenie the documentation:

Uwaga: Oracle nie zaleca stosowania identyfikatorów w cudzysłowach na bazie nazw obiektów. Te cytowane identyfikatory są akceptowane przez SQL * Plus, ale mogą nie być prawidłowe, gdy używane są inne narzędzia zarządzające obiektami bazy danych .

nazwa będzie wielkość liter, a wil trzeba dołączyć nazwę w cudzysłów przy każdym odwołać go:

select "MY COLUMN" from my_table; 

Więc ... nie byłaby moja rada ...

+2

+1 dla "nie rób". –

2

Możesz (zobacz the Oracle doc), jeśli odpowiednio je zacytujesz. Podejrzewam jednak, że to nie jest dobry pomysł, ponieważ będziesz musiał zacytować wszystko. Zasadniczo standardy/konwencje dotyczące nazw db (na przykład here lub here) faworyzują za pomocą podkreśleń (które nie wymagają cytowania) nad białymi znakami.

0

to regułą kolumny określono dla wyroczni

kolumny (dla tabel)

  1. wszystkie kolumny są w postaci {alias} _ {colname}. Na przykład: prs_id, nazwa_ prs, nazwa_sr_adr, nazwa_argumentu. Gwarantuje to, że nazwy kolumn są unikalne w schemacie, z wyjątkiem kolumn zdenormalizowanych z innej tabeli, które są zapełniane za pomocą wyzwalaczy lub logiki aplikacji.
    1. Wszystkie kolumny są w liczbie pojedynczej. Jeśli uważasz, że potrzebujesz nazwy kolumny w liczbie mnogiej, zastanów się dwa razy, czy jest to właściwy projekt? Zwykle to oznacza, że ​​dodajesz wiele wartości w tej samej kolumnie i że powinno się unikać .
    2. Wszystkie tabele mają zastępczą kolumnę klucza podstawowego w postaci {alias} _id, która jest pierwszą kolumną w tabeli. Na przykład: prs_id, mat_id, adr_id.

zawsze można mieć alias dla nazwy kolumny bu przy użyciu ""

+0

Czy masz źródło dla powyższych? –

+4

Te przypominają konwencje nazewnictwa firm lub projektów, a nie reguły "Oracle". Zasady nazewnictwa obiektu są [tutaj] (http://docs.oracle.com/cd/E11882_01/server.112/e10592/sql_elements008.htm). –

+0

Nie ma potrzeby, aby nazwy kolumn były unikalne w schemacie. Tylko w tabeli lub widoku. –

4

Tak, jest to możliwe. Musisz tylko podać nazwę kolumny. Na przykład:

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

Mimo że jest to możliwe, nie jest to dobry pomysł. Prawdopodobnie uratujesz się od bólu, jeśli zastąpisz wszystkie miejsca znakami podkreślenia.

+0

W przypadku podwójnego cudzysłowu na zewnątrz, w jaki sposób załącza się nazwę pola? tj: d2rq: sqlExpression "TO_CHAR (factCloverAsphere.Time Data Recorded," Dy Mon DD HH24: MI: SS YYYY ")" – Angelina

0

Czy to zrobiłeś dla Google?Zrobiłem - 6. Link był this, w którym znalazły się następujące:

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

... co działa dobrze, gdy próbowałem go w 10g.

1

jest to możliwe przez nazwanie kolumny między dwoma przykładami: " : "Moja kolumnaN", nazwa kolumny rozróżnia wielkość liter, co oznacza.

SELECT "my column" from table; --NOT OK 
SELECT "My columN" from table; --OK 
Powiązane problemy