297 votes

Comment faire face à des noms de colonnes SQL qui ressemblent à des mots clés SQL ?

Une de mes colonnes est appelée . Je ne peux pas changer le nom parce que je ne le permettait pas. Suis-je autorisé à faire quelque chose comme ou y at-il une syntaxe spéciale pour éviter le SQL Server étant confondu ?

434voto

tvanfosson Points 268301

Envelopper le nom de la colonne entre parenthèses comme suit, `` devient [de].

36voto

some Points 18965

Si elle avait été dans PostgreSQL, d'utiliser des guillemets autour du nom, comme:

select "from" from "table";

Remarque: à l'Interne de PostgreSQL convertit automatiquement tous les non cotées les commandes et les paramètres en minuscules. Qui ont pour effet que les commandes et les identifiants ne sont pas sensibles à la casse. sEleCt * from tAblE; est interprété comme select * from table;. Cependant, les paramètres à l'intérieur de guillemets doubles sont utilisés comme est, et, par conséquent, SONT sensibles à la casse: select * from "table"; et sélectionnez * à partir du "Tableau"; obtient le résultat de deux tables différentes.

22voto

Cade Roux Points 53870

Alors que vous êtes faire - alias il comme autre chose (ou mieux encore, utilisez un affichage ou un SP et désapprouve l’ancienne méthode d’accès direct).

12voto

Eigir Points 471

Votre question semble bien être la réponse ici, mais je tiens simplement à ajouter un commentaire à ce sujet.

Ceux de la conception de la base de données doit être bien conscient des mots clés réservés et éviter de les utiliser. Si vous découvrez que quelqu'un de l'utiliser, de les informer à ce sujet (de façon polie). Le mot clé ici est réservée mot.

Plus d'informations:

"Les mots réservés ne doit pas être utilisé comme les noms d'objet. Les bases de données de mise à niveau à partir de versions antérieures de SQL Server peut contenir des identifiants qui incluent les mots ne sont pas réservées au plus tôt version, mais ce sont des mots réservés pour la version actuelle de SQL Server. Vous pouvez vous référer à l'objet en utilisant délimité par des identificateurs jusqu'à ce que le nom de peut être changé." http://msdn.microsoft.com/en-us/library/ms176027.aspx

et

"Si votre base de données contient les noms de qui correspondent à des mots réservés, vous devez l'utilisation d'identificateurs délimités lorsque vous reportez-vous à ces objets. Pour plus d' d'informations, consultez les Identifiants (DMX)." http://msdn.microsoft.com/en-us/library/ms132178.aspx

8voto

John Baughman Points 165

Si vous utilisez SQL Server, vous pouvez tout simplement encapsuler les crochets autour du nom de colonne ou une table.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X