简单的Postgresql语句 - 列名不存在

时间:2011-04-27 06:22:20

标签: php postgresql

我一直在拔头发。我有一个非常简单的postgre数据库,一个特定的表有一个名为lName(大写N)的列。现在我知道postgre我必须引用lName,因为它包含一个大写的N.

我正在尝试使用以下语句查询数据库:

  

SELECT * FROM employee WHERE   “lName”喜欢“史密斯”

但是我收到了这个错误:

  

警告:pg_query()   [function.pg-query]:查询失败:   错误:列“Smith”不存在   在......

这是什么问题?为什么说这个专栏是“史密斯”?

2 个答案:

答案 0 :(得分:24)

我猜:

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

(请注意不同的引号; "foo"是带引号的标识符; 'foo'是字符串文字)

此外,在大多数SQL方言中,没有通配符的LIKE等同于=;你的意思是包括一个通配符吗?

答案 1 :(得分:4)

因为"Smith"是标识符,并且在该位置,标识符应该是列。您可能想要的是一个字符串文字,它使用单引号:'Smith'。所以

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

您可能还希望字符串中的通配符搜索('Smith%'?)。与典型的正则表达式匹配不同,LIKE匹配锚定到字符串的开头和结尾。