【问题标题】:Oracle SQL: Column not allowedOracle SQL:不允许列
【发布时间】:2015-02-07 19:09:00
【问题描述】:

我已经创建了一个表:

CREATE TABLE AIRLINE (
    airline_code        NUMBER(4) PRIMARY KEY NOT NULL,
    airline_name        VARCHAR(29) NOT NULL,
    airline_address1    VARCHAR(29) NOT NULL,
    airline_address2    VARCHAR(29),
    airline_postcode    VARCHAR(29),
    airline_city        VARCHAR(29) NOT NULL,
    airline_country     VARCHAR(29) NOT NULL
);

当我插入这个插入语句时:

INSERT INTO AIRLINE (airline_code, airline_name, airline_address1, airline_address2, airline_postcode, airline_city, airline_country)
VALUES ("BA07", "British Airways PLC", "Waterside", "PO Box 365, Harmondsworth", "UB7 0GB", "London", "United Kingdom");

我收到一个指向英国的错误,提示“此处不允许列”,据我所知,列数与插入表中的数据相同。

【问题讨论】:

标签: sql oracle


【解决方案1】:

双引号通常用于对象名称(例如,列名“First name”)。这是 SQL-92 标准的一部分。

在 ANSI SQL 中,双引号引用对象名称(例如表),这允许它们包含不允许的字符,或者与保留字相同(避免这种情况,真的)。

单引号用于字符串。

INSERT INTO AIRLINE (airline_code, airline_name, airline_address1, 
airline_address2, airline_postcode, airline_city, airline_country)
VALUES ('BA07', 'British Airways PLC', 'Waterside', 'PO Box 365, 
Harmondsworth', 'UB7 0GB', 'London', 'United Kingdom');

【讨论】:

    【解决方案2】:

    在字符串周围使用单引号而不是双引号。

    【讨论】:

      【解决方案3】:

      airline_code NUMBER(4) PRIMARY KEY NOT NULL,

      “BA07”

      除了关于双引号的其他答案之外,您需要确保不要对 NUMBER 数据类型使用任何单引号,您需要将值括起来仅在 STRING 的单引号内。

      在您的情况下,column airport_code 是类型 NUMBER(4)。但是,您要插入的值是字母数字'BA07'。所以,您需要先将列的数据类型更改为VARCHAR2(4)

      CREATE TABLE AIRLINE (
          airline_code        VARCHAR2(4) PRIMARY KEY NOT NULL,
          airline_name        VARCHAR(29) NOT NULL,
          airline_address1    VARCHAR(29) NOT NULL,
          airline_address2    VARCHAR(29),
          airline_postcode    VARCHAR(29),
          airline_city        VARCHAR(29) NOT NULL,
          airline_country     VARCHAR(29) NOT NULL
      );
      
      INSERT INTO AIRLINE (airline_code, airline_name, airline_address1, 
      airline_address2, airline_postcode, airline_city, airline_country)
      VALUES ('BA07', 'British Airways PLC', 'Waterside', 'PO Box 365, 
      Harmondsworth', 'UB7 0GB', 'London', 'United Kingdom');
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-05-13
        • 1970-01-01
        • 1970-01-01
        • 2018-05-15
        • 1970-01-01
        • 2021-12-20
        • 2020-03-31
        相关资源
        最近更新 更多