2012-12-10 18 views
19

È possibile creare una tabella con nome colonna contenente spazio? Se sì, come posso creare e usarlo?Nome colonna tabella Oracle con spazio

+4

È possibile - leggere "identificatori citati" nel manuale. Ma vorrei fortemente ** sconsigliarlo. –

risposta

25

È possibile, ma non consigliabile. È necessario racchiudere il nome della colonna tra virgolette.

create table my_table ("MY COLUMN" number); 

Ma si noti l'avviso in the documentation:

Nota: Oracle sconsiglia di utilizzare identificatori tra virgolette per il database nomi degli oggetti. Questi identificatori citati sono accettati da SQL * Plus, ma potrebbero non essere validi quando si utilizzano altri strumenti che gestiscono gli oggetti del database .

Il nome sarà maiuscole e minuscole, e necessario fornire in loco racchiudere il nome tra virgolette ogni volta che si fa riferimento a esso:

select "MY COLUMN" from my_table; 

Quindi ... non, sarebbe il mio consiglio ...

+2

+1 per "non". –

2

È possibile (vedere the Oracle doc) se si cita questi in modo appropriato. Tuttavia, sospetto che non sia una buona idea, dal momento che dovrai citare tutto. Generalmente gli standard/convenzioni di denominazione DB (ad esempio here o here) favoriscono l'utilizzo di caratteri di sottolineatura (che non richiedono la quotatura) su spazi vuoti.

0

Questa è la regola colonne definite per Oracle

colonne (per le tabelle)

  1. Tutte le colonne sono in forma {alias} _ {} colname. Ad esempio, prs_id, nome_prs, prs_adr_id, adr_street_name. Ciò garantisce che i nomi delle colonne siano univoci in uno schema, ad eccezione delle colonne denormalizzate da un'altra tabella, che vengono popolate utilizzando i trigger o la logica dell'applicazione .
    1. Tutte le colonne sono in singolare. Se pensi di aver bisogno di un nome di colonna al plurale, pensa due volte se è il design giusto? Di solito è significa che stai includendo più valori nella stessa colonna e che dovrebbe essere evitato.
    2. Tutte le tabelle hanno una colonna chiave primaria surrogata nella forma {alias} _id, che è la prima colonna della tabella. Ad esempio, prs_id, mat_id, adr_id.

si può sempre avere alias per nome di colonna bu usando ""

+0

Hai una fonte per quanto sopra? –

+4

Quelli sembrano convenzioni di denominazione aziendale o di progetto, non regole "Oracle". Le regole di denominazione degli oggetti sono [qui] (http://docs.oracle.com/cd/E11882_01/server.112/e10592/sql_elements008.htm). –

+0

Non è necessario che i nomi delle colonne siano univoci in uno schema. Solo in una tabella o vista. –

4

sì, è possibile. Devi solo essere sicuro di citare il nome della colonna. Per esempio:

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

Anche se è possibile, non lo rende una buona idea. Probabilmente ti libererai da un sacco di dolore se sostituisci tutti gli spazi con i trattini bassi.

+0

In caso di doppie virgolette esterne, come si racchiude il nome del campo? es .: d2rq: sqlExpression "TO_CHAR (factCloverAsphere.Time Data Recorded, 'Dy Mon DD HH24: MI: SS YYYY')" – Angelina

0

Hai provato Google per questo?Ho fatto - il 6 ° collegamento è stato this, in cui trovo il seguente:

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

... che funziona bene quando l'ho provato in 10g.

1

è possibile nominando la colonna tra due " esempio: "My columN", il nome della colonna diventa case sensitive che significa.

SELECT "my column" from table; --NOT OK 
SELECT "My columN" from table; --OK 
Problemi correlati