【问题标题】:Select field with apostrophe SQL选择带有撇号 SQL 的字段
【发布时间】:2018-03-26 09:35:58
【问题描述】:

我有一个FIELD 医生的病人,表格中有一个撇号emergency

我试过了:

SELECT * FROM emergency."doctor''s patient"

【问题讨论】:

  • 您使用的是哪个DBMS? “SQL”只是一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加标签postgresqloraclesql-serverdb2、...
  • 列(不是“字段”)不能在from 子句中引用。在带引号的标识符中,不需要转义单引号,所以它应该是select "doctor's patient" from emergency(但这部分取决于您使用的 DBMS 的标准兼容程度)

标签: sql field apostrophe


【解决方案1】:

你可以试试下面的方法。

SELECT [doctor'spatient] FROM emergency

【讨论】:

  • 那个非标准的 SQL。您应该提及此答案适用于哪个 DBMS
【解决方案2】:

非常糟糕的设计,但我已经看到它完成了。还看到它的名称中带有空格。你两者都有。如果按照@mahabub 的建议使用 SQL Server,请将名称括在 [方括号] 中,如下所示:

select [doctor's patient] from [emergency]

话虽如此,您也可以使用SET QUOTED IDENTIFIER 命令来允许您使用双引号来分隔名称,例如,

select "doctor's patient" from "emergency"

【讨论】:

  • 好点。我添加了一个不必要的价值判断。已删除。
【解决方案3】:

我很惊讶数据库让那个列名消失了。名称中的特殊字符通常是禁忌。如果您不是 DBA,我建议您与他们交谈以重命名不带撇号且不带空格的字段。它会让生活更轻松。

在查询中,尝试转义撇号,如 \'

SELECT * FROM emergency.'doctor\'s patient';

SELECT * FROM emergency."doctor\'s patient";

【讨论】:

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