Une de mes colonnes s'appelle from
. Je ne peux pas changer le nom parce que je ne l'ai pas fait. Suis-je autorisé à faire quelque chose comme SELECT from FROM TableName
ou y a-t-il une syntaxe spéciale pour éviter la confusion de SQL Server?
sql
sql-server
Nathan H
la source
la source
SELECT "from" FROM TableName
, agréable et portable!Réponses:
Enveloppez le nom de la colonne entre crochets comme ceci,
from
devient [de].Il est également possible d'utiliser les éléments suivants (utiles lors de l'interrogation de plusieurs tables):
la source
select TableName.from from TableName;
PS: Cela fonctionne dans MySQLS'il avait été dans PostgreSQL, utilisez des guillemets doubles autour du nom, comme:
Remarque: en interne, PostgreSQL convertit automatiquement toutes les commandes et paramètres non cotés en minuscules. Cela a pour effet que les commandes et les identificateurs ne sont pas sensibles à la casse. sEleCt * de la table; est interprété comme select * from table; . Cependant, les paramètres entre guillemets doubles sont utilisés tels quels et sont donc sensibles à la casse: sélectionnez * dans "table"; et sélectionnez * dans "Table"; obtient le résultat de deux tables différentes.
la source
Pendant que vous le faites, alias-le comme autre chose (ou mieux encore, utilisez une vue ou un SP et déconseillez l'ancienne méthode d'accès direct).
la source
Ce sont les deux façons de le faire:
la source
Votre question semble être bien répondue ici, mais je veux juste ajouter un commentaire de plus à ce sujet.
Les concepteurs de la base de données doivent bien connaître les mots clés réservés et éviter de les utiliser. Si vous découvrez que quelqu'un l'utilise, informez-le (d'une manière polie). Le mot-clé ici est réservé mot .
Plus d'information:
et
la source
Si vous utilisez SQL Server, vous pouvez simplement envelopper les crochets autour du nom de la colonne ou de la table.
la source
Dans Apache Drill, utilisez des guillemets:
la source
J'ai également fait face à ce problème. Et la solution pour cela est de mettre [Column_Name] comme ceci dans la requête.
Cela fonctionnera donc parfaitement bien.
la source
Salut, je travaille sur des systèmes Teradata qui sont entièrement conformes à la norme ANSI. Utilisez des guillemets doubles "" pour nommer ces colonnes.
Par exemple,
type
est un mot clé réservé SQL, et lorsqu'il est utilisé entre guillemets,type
est traité comme un nom spécifié par l'utilisateur.Voir l'exemple de code ci-dessous:
la source
Vous pouvez mettre le nom de votre colonne entre parenthèses comme:
Ou
Mettez dans une table temporaire puis utilisez comme vous le souhaitez.
Exemple:
Ici, je suppose simplement que your_tablename ne contient qu'une seule colonne (c'est-à-dire de).
la source
[from]
c'est la seule colonne quiyour_tablename
a."[Total]"
? Ou peut-être existe-t-il un moyen de lui échapper, quelque chose comme ça[\[Total\]]
?J'ai rencontré le même problème en essayant de mettre à jour une colonne dont le nom était un mot - clé . La solution ci-dessus ne m'a pas aidé. Je l'ai résolu en spécifiant simplement le nom de la table comme ceci:
la source
Les éléments suivants fonctionneront parfaitement:
la source
Dans MySQL, alternativement à l'utilisation de guillemets (`), vous pouvez utiliser l'interface utilisateur pour modifier les noms des colonnes. Cliquez avec le bouton droit sur le tableau> Modifier le tableau> Modifier le nom de la colonne qui contient le mot clé sql> Valider.
Notez que ce qui précède ne fonctionne pas dans MySQL
la source
A en juger par les réponses ici et ma propre expérience. La seule réponse acceptable, si vous prévoyez d'être portable est de ne pas utiliser de mots clés SQL pour les noms de table, de colonne ou autres.
Toutes ces réponses fonctionnent dans les différentes bases de données mais apparemment, beaucoup ne prennent pas en charge la solution ANSI.
la source