2011-04-27 4 views
11

J'ai tiré mes cheveux. J'ai une base de données postgre très simple, une table spécifique a une colonne nommée lName (N majuscule). Maintenant, je sais avec postgre je dois citer lName car il contient une majuscule N.Déclaration Postgresql simple - le nom de la colonne n'existe pas

Je suis en train d'interroger la base de données avec la déclaration suivante:

SELECT * FROM employee WHERE "lName" LIKE "Smith"

Mais je suis recevoir cette erreur:

Warning: pg_query() [function.pg-query]: Query failed: ERROR: column "Smith" does not exist in .....

Quel est le problème ici? Pourquoi dit-on que la colonne est "Smith"?

Répondre

23

Je suppose:

SELECT * FROM employee WHERE "lName" LIKE 'Smith' 

(notez les différentes citations, "foo" est un identifiant cité; 'foo' est une chaîne littérale)

En outre, dans la plupart des dialectes SQL, un LIKE sans caractère générique équivalent à =; vouliez-vous inclure un caractère générique?

4

Parce que "Smith" est un identificateur, et dans cette position, un identificateur devrait être une colonne. Ce que vous vouliez probablement dire est un littéral de chaîne, qui utilise des guillemets simples: 'Smith'. Alors

SELECT * FROM employee WHERE "lName" LIKE 'Smith' 

Vous avez probablement également besoin d'un joker dans la chaîne à rechercher ('Smith%'?). La correspondance LIKE est ancrée au début et à la fin d'une chaîne, contrairement à la correspondance d'expression régulière typique.

Questions connexes