"mary"列不存在。

10

我这里正在进行一个简单的查询,但是它返回说“Mary”这个列不存在:

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

有人可以解释一下可能发生了什么吗?我不想让玛丽作为一列,而是作为一个值。

提前致谢, 加布里埃尔


顺便提一下,如果我没记错的话,ANSI SQL引用规则是使用'单引号'表示字面量,而在需要处理空格、大小写敏感等情况下,使用"双引号"表示标识符(列名、表名等)。遵循这些规则可以适用于大多数数据库,尽管MySQL需要SET sql_mode = 'ANSI'才能接受它。在MS SQL、PostgreSQL和MySQL的ANSI模式中,这种引用方式都是可行的。 - Craig Ringer
1
刚刚有一个非常相似的问题被发布:https://dev59.com/n2Ys5IYBdhLWcg3wAfLO。顺便说一下,Gabriel,请通过点击Martin Smith答案下面的打勾来接受他的答案。 - Craig Ringer
不,这不是重复的。我是巴西人,另一个用户似乎来自德语国家。非常感谢。我试图接受Martin Smith的答案,但有时间限制。现在已经被接受了。 - Gabriel Sotero
2个回答

15

使用普通单引号来界定一个字符串字面值'Mary',不要使用智能引号‘Mary’


3
不要用文字处理软件编辑SQL,这是一个很好的理由。它们喜欢“帮助”你并“修正”你的“错误”。 - Craig Ringer
我的教授要求在实现数据库之前提交一份包含一些SQL命令的报告,所以只需要复制/粘贴即可。非常感谢! - Gabriel Sotero

2

确保正确引用字符串。

从您的代码片段来看,问题可能出在您使用的不是简单的单引号。


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