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

14

我已经抓狂了。我有一个非常简单的postgre数据库,其中一个特定的表有一个名为lName(大写N)的列。现在我知道在postgre中必须引用lName,因为它包含一个大写N。

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

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

但我收到了这个错误:

警告:pg_query() [function.pg-query]:查询失败: ERROR: 列"Smith"不存在 in .....

这里出了什么问题?为什么它说该列是“Smith”?

2个回答

33

我猜测:

 SELECT * FROM employee WHERE "lName" LIKE 'Smith'
(注意不同的引号; "foo" 是一个带引号的标识符; 'foo' 是一个字符串文字)
另外,在大多数SQL方言中,没有通配符的LIKE等同于=; 你是否想要包含一个通配符?

5

因为"Smith"是一个标识符,在该位置上,应该是一个列名。您可能想使用字符串字面值,这需要使用单引号:'Smith'。所以:

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接