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

mee*_*nxo 11 php postgresql string-constant

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

我试图用以下语句查询数据库:

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

但我收到此错误:

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

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

Mar*_*ell 26

我猜:

 SELECT * FROM employee WHERE "lName" LIKE 'Smith'
Run Code Online (Sandbox Code Playgroud)

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

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


Pet*_*aut 5

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

SELECT * FROM employee WHERE "lName" LIKE 'Smith'
Run Code Online (Sandbox Code Playgroud)

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