web-dev-qa-db-fra.com

Nom de colonne de la table Oracle avec espace

Est-il possible de créer une table avec un nom de colonne contenant un espace? Si oui, comment puis-je le créer et l'utiliser?

21
laksys

C'est possible, mais ce n'est pas conseillé. Vous devez mettre le nom de la colonne entre guillemets.

create table my_table ("MY COLUMN" number);

Mais notez l'avertissement dans la documentation :

Note: Oracle ne recommande pas l'utilisation d'identificateurs entre guillemets pour la base de données noms d'objet. Ces identificateurs cités sont acceptés par SQL * Plus, mais ils peuvent ne pas être valides lorsque vous utilisez d'autres outils de gestion de base de données objets.

Le nom sera sensible à la casse et vous devrez le mettre entre guillemets chaque fois que vous le référencerez:

select "MY COLUMN" from my_table;

Alors ... non, serait mon conseil ...

31
Alex Poole

Oui c'est possible. Vous devez juste être sûr de citer le nom de la colonne. Par exemple:

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

Même si c'est possible, cela n'en fait pas une bonne idée. Vous éviterez probablement beaucoup de peine si vous remplacez simplement tous vos espaces par des traits de soulignement.

4

Vous pouvez (voir le document Oracle ) si vous les citez correctement. Cependant, je soupçonne que ce n'est pas une bonne idée, car vous devrez tout citer. Généralement, les normes et conventions de nommage de la base de données (par exemple, ici ou ici ) préfèrent utiliser des traits de soulignement (qui ne nécessitent pas de citation) plutôt que des espaces.

2
Brian Agnew

il est possible de nommer la colonne entre deux " exemple: "My columN", le nom de la colonne devient sensible à la casse, ce qui signifie.

SELECT "my column" from table; --NOT OK
SELECT "My columN" from table; --OK
1
mcha

C’est la règle des colonnes définie pour Oracle

Colonnes (pour les tableaux)

  1. Toutes les colonnes sont au format {alias} _ {{nomcolonne}. Par exemple, prs_id, Prs_name, prs_adr_id, adr_street_name. Cela garantit que les noms de colonne Sont uniques dans un schéma, à l'exception des colonnes dénormalisées de Une autre table, qui sont renseignées à l'aide de déclencheurs ou d'application Logic .
    1. Toutes les colonnes sont au singulier. Si vous pensez avoir besoin d'un nom de colonne au pluriel, réfléchissez à deux fois s'il s'agit du bon modèle? Habituellement, cela signifie que vous incluez plusieurs valeurs dans la même colonne et que vous devriez éviter
    2. Toutes les tables ont une colonne de clé primaire de substitution sous la forme {alias} _id, qui est la première colonne de la table. Par exemple, prs_id, mat_id, Adr_id.

vous pouvez toujours avoir un alias pour le nom de colonne bu en utilisant ""

0
Ajith Sasidharan

Avez-vous Google pour cela? J'ai fait - le 6ème lien était ce , dans lequel je trouve ce qui suit:

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

... qui fonctionne bien quand je l'ai essayé en 10g.

0
Mike Woodhouse