【问题标题】:Column 'mary' does not exist列“玛丽”不存在
【发布时间】:2012-11-02 13:51:03
【问题描述】:

我在这里做一个简单的查询,它返回“玛丽”列不存在:

SELECT  telephone.telephonenumber as tel
FROM    person, telephone
WHERE   person.idperson = telephone.idperson
AND person.personname = ‘Mary’;

有人能解释一下会发生什么吗?我不希望 Mary 作为一个列,而是作为一个值。

提前致谢, 加布里埃尔

【问题讨论】:

  • 顺便说一句,IIRC ANSI SQL 引用规则是 'single quotes' 用于文字,"double quotes" 用于处理空格、区分大小写等需要的标识符(列名、表名等)。以下这些规则适用于大多数数据库,尽管 MySQL 要求 SET sql_mode = 'ANSI' 接受它。这种引用在 MS SQL、PostgreSQL 和 ANSI 模式下的 MySQL 中都很好。
  • 刚刚发布了另一个非常相似的问题:stackoverflow.com/q/13219121/398670。顺便说一句,加布里埃尔,请点击马丁·史密斯答案下方分数下方的勾号,接受他的答案。
  • 不,它不是重复的。我是巴西人,另一位用户似乎来自说德语的国家。非常感谢。我试图接受马丁史密斯的回答,但有时间限制。现在它被接受了。

标签: sql postgresql string-constant


【解决方案1】:

使用纯单引号分隔字符串文字 'Mary' 而不是智能引号 ‘Mary’

【讨论】:

  • 这是不在字处理器中编辑 SQL 的一个很好的理由。他们喜欢“帮助”你并“修正”你的“错误”。
  • 我的教授在实现数据库之前用一些 SQL 命令询问了一份报告,所以它只是复制/粘贴。非常感谢!
【解决方案2】:

确保正确引用字符串。

从您的 sn-p 来看,我想说这就是问题所在,因为您使用的不是简单的单引号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多