【问题标题】:Simple Postgresql Statement - column name does not exists简单的 Postgresql 语句 - 列名不存在
【发布时间】:2011-08-13 14:26:21
【问题描述】:

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

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

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

但我收到此错误:

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

这里有什么问题?为什么说栏目是“Smith”?

【问题讨论】:

    标签: php postgresql string-constant


    【解决方案1】:

    我猜:

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

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

    另外,在大多数 SQL 方言中,不带通配符的 LIKE 等价于 =;您的意思是要包含通配符吗?

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-12-31
        • 1970-01-01
        • 2010-10-16
        • 2018-07-22
        • 1970-01-01
        • 1970-01-01
        • 2020-02-22
        相关资源
        最近更新 更多